16.python3函数

2020-05-26  本文已影响0人  dwy_interesting

函数概述

1.本质:函数就是对功能的封装

2.优点:
简化代码结构,增加了代码的复用度(重复使用的程度)
如果想修改某些功能,只需要修改对应的函数即可

3.函数定义
格式:

def 函数名(参数列表):
    语句
    return 表达式

注意:最后的return 表达式,可以不写,相当于return None
举例:

def myPrint():
    print("This is a good day!")

4.函数调用格式:函数名(参数列表)
注意:参数列表是函数的调用者给函数传递的信息,如果没有参数,小括号也不能省略
函数调用的本质:实参给形参赋值的过程
举例:

myPrint()

函数的参数与返回值

参数:
函数的参数--参数必须要按顺序传递,个数必须要对应
形参(形式参数):定义函数时小括号中的变量,本质是变量
实参(实际参数):调用函数时给函数传递的数据,本质是值
举例:

def myPrint(str,age):
    print(str,age)

#调用
a = 18
myPrint("tester",a)     # I am 18

函数的返回值:

def mySum(num1,num2):
    #将结果返回给函数的调用者
    #执行完return语句,该函数就结束了,return后面的代码语句不执行
    return num1+num2

#调用
print(mySum(3,2))

函数参数传递与引用传递

参数值传递和引用传递
1.值传递:传递的是不可变类型(数字、字符串、元组),不改变原值
举例:

def fun1(num):
    num = 10

temp = 20
fun1(temp)
print(temp) #20

2.引用传递:传递的是可变类型(列表、字典、集合),改变原值
举例:

def fun2(lis):
    lis[0] = 100

li = [1,2,3,4]
fun2(li)
print(li)          #[ 100, 2, 3, 4 ]

函数的关键字参数、默认参数及不定长参数

关键字参数--允许函数调用时参数的顺序与定义时不一致
举个栗子:

def myPrint(str,age):
    print(str,age)

a = 18
#未使用关键字参数,传参必须与定义参数的顺序一致
myPrint("I am",a)
#使用关键字参数,但是正常情况下还是保持参数顺序和定义顺序一致
myPrint(age=19,str="I am")

默认参数--调用函数时,如果没有传递参数,则使用默认参数
举个栗子:

def myPrint(str="I am",age=18):
    print(str,age)

myPrint()

不定长参数--能处理比定义时更多的参数
1.接受元组数据:不定长参数第一种写法 args,args为元组类型,*代表元组数据
举例:求多个数的和

#加了星号(*)的变量会存放所有未命名的变量参数,如果在函数调用时没有指定参数,它就是一个空元组
def mySum(*num):
    sum = 0
    for i in num:
        sum += i
    return sum

print(mySum(1,2,3,4))       #10

2.接受字典键值对类型数据
不定长参数第二种写法 kwargs,kwargs为字典类型,**代表键值对数据
举例:

def func2(**kwargs):
    print(kwargs)   
    print(type(kwargs))

func2(x=1,y=2,z=3)  #{'x': 1, 'y': 2, 'z': 3}
            #<class 'dict'>
func2(1,2,3)  #会报错
上一篇 下一篇

猜你喜欢

热点阅读