Python学习日记Day3:Python函数

Python函数和类

一、Python函数

任何程序里面包含的不是函数就是类,Python也是如此。

  1. 函数的定义

函数的作用有两个:①模块化编程 ②代码重用

函数是独立的,完成特定功能的代码段,在Python程序中,所有的一切都是函数,大多数是有名函数,也存在匿名函数。

#函数的基本语法:
def 函数名称([参数1,参数2,.....]):  #这里的参数是形式参数
    函数体
    ...
    [return 返回值] 
#尽量使用return来进行函数值的返回

  1. 函数的参数(形参和实参)

    在函数定义和调用的时候,我们能根据自己的需求来实现参数的传递,函数的参数有两种形式:形参和实参。

    形参:在函数定义的时候,括号中所编写的参数成为形式参数。

    实参:在函数调用的时候,传递的参数成为实际参数

    def hello(name):#name是定义时所编的形式参数,这里name是局部变量
        return name
    mingzi  ='Mrzhang'
    greet(mingzi)#函数调用时,括号内传递的是实际参数
    

    函数的参数类型:位置参数、关键词参数、缺省参数,不定长参数、

    在函数定义时,我们可以定义多个参数,但是在函数调用时,我们也应该传递多个参数,正常情况下,要一一对应。

    位置参数:

    def student(name,age,mobile):
        print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
    #传递实参要一一对应
    student('zhangsan',20,'1310389090')
        #顺序不能颠倒,否则意思就会改变,所以该参数也叫位置参数
    

    关键词参数:

    def student(name,age,mobile):
        print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
    #传递实参要一一对应
    student(name='zhangsan',age=20,mobile='1310389090')
    #通过键=值的形式指定内容,让函数更加清晰,即使位置改变,意思也不会改变。
    

    缺省参数:也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可以不穿该默认值。

    注意:定义缺省参数时,一定要把它卸载参数列表的最后面。

    def student(name,age,gender='male'):
        print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
    #传递实参要一一对应
    student('zhangsan',20)
    student('lisi',21,female)
    student('wanger',18)          
    

    不定长参数:也叫可变参数

    #用于不确定调用的时候会传递多少个参数(无参数也可)的场景
    #分为包裹位置和包裹关键字参数
    ##包裹位置参数
    def student(*args):#args 元组类型数据对传递参数有顺序要求
         print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
    student('zhangsan',20,'1310389090')
            
    #包裹关键字参数
    def student(**kwargs):
     #kw=keyword+args
     #kwargs字典类型数据,对传递参数没有顺序要求,格式要求key=value
         print(f'学生的名字交{kwargs["name"],今年{kwargs["age"]岁了,联系方式是{kwargs["mobile"]}')      
    

    Python组包:把多个数据组成元组或字典的过程。无论是包裹位置传递还是包裹关键字传递,都是一个组包的过程。

  2. Python拆包(元组和字典)

    拆包:对于函数中的多个返回数据,去掉元组,列表或者字典 ,直接获取里面数据的过程。

    #元组的拆包过程
    def func():
        return 100,200 #返回多个值,使用tuple元组类型数据
    #定义两个变量接受元组中的每个数组进行拆包
    num1,num2=func()
    print(num1)
    print(num2)
    #结果为 100 ,200
    
    #字典的拆包过程
    dict1 = {'name':'小明', 'age':18}
    a, b = dict1
    print(a)
    print(b)
    # 获取字典中的数据
    print(dict1[a])
    print(dict1[b])
    
  3. 函数的变量(局部变量和全局变量)

    在Python中,定义在函数外部的变量称之为全局变量;定义在函数内部的变量称之为局部变量。

    #全局变量作用范围:在整个程序范围内都可以直接使用
    #局部变量作用范围:在函数调用的过程中,开始定义,函数运行的过程中生效,执行完毕之后,进行销毁。(可以了解Python的垃圾回收机制)
    num=1
    def func():
        i=1
    #num 为全局变量,i为局部变量
    

    思考:能不能在局部作用域中对全局变量进行更改?

    答:global关键字

    num=10
    def funca():
        global num 
        #若没有这一句,输出的num会等于 10,并没有更改全局变量
        num =20
    funca()
    print(num)
    #global关键字可以用于多函数之间的数据共享
    
  4. 关于return返回值问题:

    (1)如果一个函数有两个return,程序如何执行?

    def return_text():
        return 1
    	return 2
    reslut=return_text()
    print(result)
    #结果是返回 1 ,因为return可以退出当前函数,第一个return下面的代码就不执行了
    

    (2)如果一个一个函数有多个返回值,该如何书写?

    def return_text():
        return 1,2
    result=return_text()
    print(result)
    #在python中,一个函数只能返回一个结果,如果想要返回多个结果,可以使用元组的形式,在学习元组时也有讲到过,元组可以返回多个值。
    #可以查看结果类型,type(result)
    
  5. 函数的调用:

    在Python中函数和变量一样,都是先定义后进行调用

    #基本语法:
    def hello(name):
        return name+',hello!'
    result=hello('Mrzhang') #直接使用函数名进行调用,赋值给str
    print(result) 
    #打印结果
    
  6. 函数的嵌套

    函数的嵌套调用:一个函数里面又调用了另外一个函数。

    Python代码执行遵循一个顺序原则: 从上往下,从左往右,一行一行地执行。

    def funcA():
        print('this is function A.')
    def funcB():
        print('*' * 40) # 可以打印40个*
        print('this is function B')
        funcA()
        print('*' * 40)
    funcB()
    #代码运行顺序(按照行数):1 3 8 4 5 6 2 7 
    
    

    代码执行流程:

    ​ 执行第1行时仅仅定义了funcA函数,内部代码没有执行,跳过第2行继续执行,

    ​ 执行到第3行,定义funcB函数,并没有真正的调用和执行。

    ​ 代码跳到第8行,funcB函数,调用funcB并且执行内部代码,程序返回第4行

    ​ 执行第4行,打印字符,并继续执行,直到第6行调用函数funcA(),跳到第2行。

    ​ 第二行执行完毕后,返回funcB,继续第7行,打印字符串。

  7. Python的内置函数:

    内置函数无须从模块中导入,也不用定义 就可以直接在任意位置直接调用。

    #一些常用的内置函数
    abs(-1):求绝对值,返回1 
    max([1,2,3]):求序列中最大值,可以是列表或元组
    min(2,3,4):求序列中最小值,可以是列表或元组
    divmod(6,3):取模,返回一个元组,包含商和余数
    int(3.9):转换成整数,去尾转换,结果为3
    float(3):转换成浮点数
    str(123):转换成字符串
    list((1,2)):元组转换为列表
    tuple([1,2]):列表转换成元组
    len([1,3,5]):求序列长度,可以是列表或元组
    
9.Python文件操作方法(读写)

open函数负责新建、打开文件,并返回操作对象。

read方法将文件内容读取到内存。

write方法将指定内容写入文件

close方法关闭文件,open文件后必须有close文件。

#open函数的语法
open(filename[,mode,encoding=])
'''
filename 要打开或新建的文件地址或者名称,字符串形式,例如 text.txt 或者E:/python/text.txt
mode 文件访问模式,只读,只写,读写等等,可选参数,有参数列表,默认模式为只读
encoding= 编码解码的标准,如果文件中包含中文信息,需要制定encoding=utf-8

'''
实例:
f=open('test.txt','a+',encoding='utf-8')
data=f.write('Hello World')
read=f.read()
print(read)

你可能感兴趣的:(Python学习日记,python,经验分享)