1、概述
(1)定义:
def 函数 (参数) 代码1 代码2 .....
(2)调用:
函数名(参数)
P.S:(1)在python 中,函数必须先定义后使用。
(2)定义函数时代码不执行,调用时执行。
# 演示 def add_func(a, b): return a+b a = 1 b = 2 print(add_func(a, b)) # 3
2、说明文档
def add_func(a, b): """ 函数说明 :param a:参数1 :param b:参数2 :return:返回值 """ return a+b help(add_func)
(1)书写:函数名下一行,三引号内
(2)查看:help()函数
3、全局遍量和局部变量
(1)局部变量:只在函数体内部的变量,函数结束即销毁
(2)全局变量:函数体内外可用的变量
a = 100 # 全局变量 print(a) # 输出全局变量a,100 def function1(): print(a) # 输出全局变量a,100 def function2(): a = 200 # 局部变量,全局变量不变 print(a) # 输出局部变量a,200 def function3(): global a # 声明全局表量 a =200 # 修改全局变量 print(a) # 输出全局变量a,200 function1() function2() print(a) # 输出全局变量a,100 function3() print(a) # 输出全局变量a,200
4、多个返回值
def return_num(): return 1, 2 # 逗号隔开,默认返回元组返回 # 另:return 后面可以直接书写元组,字典,列表 print(return_num()) # (1, 2)
5、函数的参数
位置参数 |
调用函数时根据函数定义的参数位置来传递参数 def user(name,age,gender):
print(f'您得名字{name},年龄{age},性别{gender}')
user('tom',20,'男')
|
关键字参数 |
函数调用通过‘键=值’来加以制定,不分先后顺序 user('Tom',gender='男',age=16)
P.s:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序 |
缺省参数 |
用于定义函数,为参数提供默认值,调用函数时可不传该默认参数得值 def user(name,age,gender='男'):
print(f'您得名字{name},年龄{age},性别{gender}')
user('小米',20) #gender不传参,默认为男
user('小米',66,gender='女') #gender传参,修改默认值,改为女
(P.s: 所有缺省参数必须出现在默认参数前) |
不定长参数 |
定义函数时不确定传参个数使用
def user(*args):
print(args)
user('小米',20)
user('小米')
def user(**kwargs):
print(kwargs)
user(name='小米',age=20, id=110)
user(name='小米',age=66,gender='女')
|
6、拆包
(1)元组:
def return_num(): return 100,200 #元组拆包 num1,num2=return_num() print(num1) # 100 print(num2) # 200
(2)字典
dict1 = {'name':'Tom','age':18} #字典拆包 a,b=dict1 #取键 print(a) # name print(b) # age #取值 print(dict1[a]) # Tom print(dict1[b]) # 18
7、交换变量
a,b=1,2 a,b=b,a print(a) print(b)
8、引用
python中值的传递通过引用实现。
a=1 b=a # b引用a的值 print(id(a)) # 140732320368288 print(id(b)) # 140732320368288 # b地址和a相同 a=2 print(b) # 1 b值不变 print(id(a)) # 140732320368320 print(id(b)) # 140732320368288 b地址不变 # int 为不可变类型 aa=[10,20,30] bb=aa #bb引用aa的值 print(id(aa)) # 2077392577152 print(id(bb)) # 2077392577152 # bb地址和aa相同 aa.append(30) print(bb) # [10, 20, 30, 30] bb值跟随aa改变 print(id(aa)) # 2077392577152 print(id(bb)) # 2077392577152 bb地址跟随aa改变 # 列表为不可变类型
9、可变类型和不可变类型
可变类型 |
|
不可变类型 |
|