Python(7)---函数

一、函数的定义和调用

# 定义函数,使用def关键字
def fun():
    print("a")
    print("b")
    print("c")
# 调用函数
# a
# b
# c
fun()

二、函数的文档说明(注释)

# 函数文档说明
# 查看函数的文档注释
def fun():
    '''
    这个函数打印输出Hello World!
    '''
    print("Hello World!")
# Hello World!
fun()
# fun()
# 这个函数打印输出Hello World!
help(fun)

三、带参函数

# 带参函数
def add(a,b):
    print(a + b)
a = 10
b = 20
# 30
add(a,b)

四、全局变量

# 局部和全局变量
# 定义全局变量
globeNum = 10

def fun():
    # 在函数中可以使用全局变量
    print(globeNum)
# 修改全局变量需使用global关键字,不能直接修改
def modify():
    global globeNum
    globeNum = 600
# 10
fun()
modify()
# 600
fun()

五、函数返回值

# 函数的返回值
def add(a,b):
    return a + b

result = add(10,30)
# 40
print(result)

也可以直接写return(return后不跟值),返回None
函数也可以不写return,默认返回None

函数返回多个值

# 函数返回多个值
def func(a,b):
    c = a + b
    d = a - b
    # 以列表的的形式返回多个值
    return [c,d]
def func1(a,b):
    c = a + b
    d = a - b
    # 默认以元组的方式返回
    return c,d
result = func(20,30)
# 50
print(result[0])
# -10
print(result[1])

result1 = func1(40,10)
# 50
print(result1[0])
# 30
print(result1[1])

六、函数嵌套使用

# 函数嵌套调用
def fun1():
    print("fun1")
    fun2()
def fun2():
    print("fun2")
# fun1
# fun2
fun1()

七、函数传参的方式

# 函数传参的两种形式
def fun(a,b,c):
    print("a =",a)
    print("b =",b)
    print("c =",c)

# 位置传参
# a = 1
# b = 2
# c = 3
fun(1,2,3)
# 关键字传参
# 直接指定实参传给哪个形参,注意关键字必须是形参的函数名
# a = 10
# b = 0
# c = 99
fun(b = 0,a = 10,c = 99)
# 混合传参,先按位置传参,再按关键字传参
# a = 10
# b = 111
# c = 99
fun(10,b = 111,c = 99)
# fun(a = 10,111,88) 代码报错
# fun(10,a = 10,b = 30) 代码报错,定义了重复的a

八、缺省参数

# 缺省参数
# 缺省参数要放在后面
# def fun(a-20,b) 代码报错
def fun(a,b=10):
    print("a =",a)
    print("b =",b)
# a = 111
# b = 10
fun(111)
# a = 11
# b = 20
fun(11,20)

九、不定长参数

# 函数中的不定长参数
# 形参前加一个*,该形参为不定长元组,可接收所有的位置实参,类型是元组
# 形参前加两个*,该形参为不定长字典,可接收所有的关键字实参,类型是字典
def func(*args,**kwargs):
    print(args)
    print(kwargs)

# (1, 2, 3, 4, 5)
# {}
func(1,2,3,4,5)
# ()
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
func(a=1,b=2,c=3,d=4)
# (1, 2, 3)
# {'a': 4, 'b': 5, 'c': 6}
func(1,2,3,a=4,b=5,c=6)
# 求和函数
def sum(*args,**kwargs):
    num = 0
    for i in args:
        num+=i
    for j in kwargs.values():
        num+=j
    return num
# 21
print(sum(1,2,3,a=4,b=5,c=6))

十、函数形参的完整格式

# 函数形参的完整格式(参数的顺序)
# 四种参数:普通参数,缺省参数,不定长元组参数,不定长字典参数
# 普通参数在前,缺省参数在后
def fun1(a,b=99):
    pass
# 普通参数,不定长元组,缺省参数
def fun2(a,*args,b=2):
    pass
# 普通参数,不定长元组,缺省参数,不定长字典参数
def fun3(a,*args,b=2,**kwargs):
    pass

十一、拆包与组包

# 组包,将多个数据值赋给一个变量,这个变量为元组类型
a = 1,2,3
# (1, 2, 3)
print(a)
# 拆包:将容器中的数据赋给多个变量。注意:变量的个数与容器中元素的个数要相同
b,c,d = a
# 1 2 3
print(b,c,d)
a,b = [10,20]
# 10 20
print(a,b)
dict1 = {
    
    "name":"lisi","a":"b"}
# 这里得到的是key值
a,b = dict1
# name a
print(a,b)

十二、引用

# 引用
# 可以使用id()查看变量的引用,可以将id的值认为时内存地址的别名
# 将数据10的值保存到变量a中,本质是将数据10所在的内存的引用地址保存到变量a中
a = 10
# 将变量a中保存的引用地址赋给b
b = a
# 2182075345488 2182075345488
print(id(a),id(b))
a = 20
# 2182075345808 2182075345488
print(id(a),id(b))
# 将列表的引用地址保存到list1中
list1 = [1,2,3]
# 将list1存储的引用地址保存到list2中
list2 = list1
# 2075035429696 2075035429696
print(id(list1),id(list2))
list1.append(4)
# [1, 2, 3, 4]
print(list1)
# [1, 2, 3, 4]
print(list2)

函数传参使用引用

# 函数传参传递引用
list = [1,2,3]
def fun(a):
    a.append(4)
def fun1():
    # 这里由于不算修改list中存放的引用值,所以不需要加global
    list.append(5)
fun(list)
# [1, 2, 3, 4]
print(list)
fun1()
# [1, 2, 3, 4, 5]
print(list)

猜你喜欢

转载自blog.csdn.net/weixin_46841376/article/details/115007326