python 函数参数的传递方式

1实参和形参

# 实参和形参       jack, 18 是实参          name, age 是形参
def test(name, age):
    print('年龄:',age)
    print('姓名:',name)
test('jack', 18)
'''
年龄: 18
姓名: jack
'''

2位置参数

# 位置参数
def test1(a, b):
    print(a, b)
test1(7, 9)   # 7 9
test1(9, 7)   # 9 7

3默认值参数

# 默认值参数
def test2(name, age=18):
    print('姓名:',name)
    print('年龄:',age)
test2('mark')    # 姓名: mark     年龄: 18
test2('mark', 30)         # 姓名: mark     年龄: 30

4关键字参数

# 关键字参数
def test3(a, b ,c):
    print(a, b, c)
test3(c=3, b=2, a=1)    # 1 2 3

5可变参数

主要有两种表现形式:
*param 可接收多个位置参数收集的实参组成元组
**param 可接收多个关键字参数收集的实参名和值组成一个字典

# 第一种表现形式
def test4(arg, *p):
    print(arg)
    for num in p:
        print("可变参数部分:", num)
# 一个位置参数
print(test4('bob'))
'''
bob
None
'''

# 带两个可变参数
print(test4('bob',18,'杭州'))
'''
bob
可变参数部分: 18
可变参数部分: 杭州
None
'''

# 带三个可变参数
print(test4('bob', 30, '南京', '男'))
'''
bob
可变参数部分: 30
可变参数部分: 南京
可变参数部分: 男
None
'''

# 第二种表现形式
data ={'性别':'男', '爱好':'读书'}
def test5(name, number, **p):
    print('名字:',name, '学号:',number, '其他:',p)
test5('张宇', 1001, **data)         # 名字: 张宇 学号: 1001 其他: {'性别': '男', '爱好': '读书'}

6组合参数

注意:参数的使用顺序必须是 位置参数,默认值参数,可变参数,关键字参数

def test6(a, b, c=1, *p, **k):
    print('a=', a, 'b=', b, 'c=', c, 'p=', p, 'k=', k)
test6(3, 4)                         # a= 3 b= 4 c= 1 p= () k= {}
test6(3, 4, 5)                      # a= 3 b= 4 c= 5 p= () k= {}
test6(3, 4, 5, 'A', 'B')            # a= 3 b= 4 c= 5 p= ('A', 'B') k= {}
test6(3, 4, 5, 'AB', x=7, y=8)      # a= 3 b= 4 c= 5 p= ('AB',) k= {'x': 7, 'y': 8}

7变量的作用域

a = 1   # a是全局变量
def test7():
    b = 2   # b是局部变量
    print(a, b)
test7()         # 1 2
print(a)        # 1
print(b)        # NameError: name 'b' is not defined

8匿名函数

注意:匿名函数并不是没有名字,而是将函数名作为函数的结果返回
<函数名> = lambda <形式参数列表> : <表达式>

f = lambda x,y : x+y
print(f)   # <function <lambda> at 0x000001F44706A488>
print(f(2, 3))   # 5
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值