146 lines
3.7 KiB
Plaintext
146 lines
3.7 KiB
Plaintext
=================================
|
||
Notes
|
||
Author: Flora Chen
|
||
-_- -_- -_- -_- -_- -_- -_- -_-
|
||
=================================
|
||
|
||
******函数的返回值*****
|
||
函数中的返回值是由return来决定的。
|
||
函数中没有return就没有返回值,调用函数得到的结果就是None。
|
||
函数中返回多个值,直接下载return后面用逗号隔开就可以。
|
||
当函数执行到return之后,就会直接跳出函数,返回结果,后面的代码都不会再执行了。
|
||
|
||
******函数的参数*****
|
||
1. 实参分类(实参可以是变量):
|
||
位置传参/位置参数:通过位置按顺序传递
|
||
关键字传参/关键字参数:通过参数名指定参数进行传递
|
||
示例:
|
||
def add_number(a, b):
|
||
print('a+b: ', a + b)
|
||
return a + b
|
||
# 位置传参
|
||
res = add_number(3, 5)
|
||
# 关键字传参
|
||
res1 = add_number(b=9, a=10)
|
||
print(res, res1)
|
||
|
||
注意点:
|
||
位置参数与关键字参数可以一起用。
|
||
但是同时使用时,位置参数写前面,关键字参数写后面。
|
||
示例:
|
||
def add_number(a, b, c):
|
||
return a + b + c
|
||
# 位置传参 + 关键字传参
|
||
res = add_number(3, c=5, b=4)
|
||
print(res)
|
||
|
||
2. 形参:函数括号里面的就是形参
|
||
形参的分类:
|
||
必备参数(必须参数):定义了几个参数就要传递几个参数。
|
||
默认参数(缺省参数):可传可不传,不传的情况下使用默认值,传了的情况下使用传的值。
|
||
不定长参数:位置可前可后,但是一般放在后面。
|
||
*args:接收0个或多个位置参数
|
||
**kwargs:接收0个或多个关键字参数
|
||
|
||
示例:
|
||
# 必备参数
|
||
def add_number(a, b, c):
|
||
return a + b + c
|
||
res = add_number(3, 7, 8)
|
||
print(res)
|
||
|
||
# 默认参数: 可传可不传
|
||
def add_number1(a, b, c=90):
|
||
return a + b + c
|
||
res1 = add_number1(3, 7, 8)
|
||
res2 = add_number1(3, 87)
|
||
print(res1, res2)
|
||
|
||
# 不定长参数
|
||
def add_number2(a, b, c, *args):
|
||
print('a=', a)
|
||
print('b=', b)
|
||
print('c=', c)
|
||
print(args)
|
||
add_number2(3, 7, 8, 45, 55, 6, 66)
|
||
|
||
def add_number2(a, b, c, **kwargs):
|
||
print('a=', a)
|
||
print('b=', b)
|
||
print('c=', c)
|
||
print(kwargs)
|
||
add_number2(a=3, b=7, c=8, d=45, e=55, f=6, g=66)
|
||
|
||
|
||
******函数参数的拆包*****
|
||
函数定义:
|
||
*:表示接收位置参数的不定长参数
|
||
**:表示接收关键字参数的不定长参数
|
||
示例:
|
||
def func(*args, **kwargs):
|
||
print(args)
|
||
print(kwargs)
|
||
func(11,22,33, c = 7, d = 9, e = 10)
|
||
# 输出结果:(11, 22, 33)
|
||
# {'c': 7, 'd': 9, 'e': 10}
|
||
|
||
函数调用:
|
||
*:可以对元组或列表拆包
|
||
**:可以对字典拆包
|
||
示例:
|
||
def func(a, b, c, d):
|
||
print(a)
|
||
print(b)
|
||
print(c)
|
||
print(d)
|
||
tu= (11, 22, 33, 44)
|
||
li = [333, 555, 777, 888]
|
||
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
|
||
# 对元组,列表进行拆包
|
||
func(*tu)
|
||
func(*li)
|
||
# 对字典进行拆包
|
||
func(**dic)
|
||
|
||
******函数的作用域*****
|
||
1. 全局变量&局部变量
|
||
全局变量:直接定义在文件/模块中的变量。在该文件的任何地方都可以访问。
|
||
局部变量:定义在函数内部的变量。只有在函数内部才可以访问。
|
||
示例:
|
||
# 全局变量
|
||
a = 100
|
||
def func():
|
||
# 局部变量
|
||
b = 10
|
||
print('打印全局变量a=', a)
|
||
print('打印局部变量b=', b)
|
||
print('打印全局变量a=', a)
|
||
|
||
2. 作用域
|
||
局部变量的作用域:函数内部
|
||
函数参数的作用域:函数内部
|
||
|
||
3. 在函数内部定义全局变量:使用global进行声明
|
||
示例:
|
||
def func(a, b):
|
||
# 全局变量
|
||
global c
|
||
c = 10
|
||
print('a=', a)
|
||
print('b=', b)
|
||
print('c=', c)
|
||
func(1, 3)
|
||
print(c)
|
||
|
||
4. 函数内部变量和全局变量同名时,在函数内部访问该变量,会优先使用局部变量
|
||
示例:
|
||
a = 100
|
||
def func():
|
||
a = 10
|
||
print('a=', a)
|
||
func() # 输出结果: a= 10
|
||
|
||
|
||
|
||
|