Python学习笔记(十二):函数的使用与不同的参数类型

本文详细介绍了Python中的函数创建、函数文档、修改全局变量、返回多个值以及各种参数类型(位置参数、关键字参数、默认参数和可变参数)。通过实例展示了如何使用这些特性,并强调了在函数中操作全局变量的注意事项和函数参数的使用灵活性。
摘要由CSDN通过智能技术生成

1 函数的创建

python中的函数不需要指定返回值类型,也不需要指定参数类型,直接就可以在方法体中选择是否有返回值,自由得让人有点不适应。

  • 示例
def function(a,b):
    return a+b

2 函数的说明文档

在函数名的下一行用3个”写上注释,就可以成为函数的说明文档,可用help方法查看。

def add(a,b,c):
    """
    求和函数
    :param a:参数1
    :param b: 参数2
    :param c: 参数3
    :return: 和
    """
    return a+b+c
help(add)
add(a, b, c)
    求和函数
    :param a:参数1
    :param b: 参数2
    :param c: 参数3
    :return:

3 在函数中修改全局变量

在函数中直接修改全局变量并不能改变全局变量,而只是在函数中新建了一个局部变量,如果需要在函数中修改全局变量,则需要使用global关键字表明改变量是全局变量。

'''
修改全局变量
'''
variable=10

def change():
    global variable
    variable=20

print(variable)
change()
print(variable)
10
20

4 多个返回值

当函数需要返回多个值的时候,我们可以返回多个值,这些值将自动组成一个元组。

def test():
    return 1,2
result=test()
print(result)
(1, 2)

当然,我们也可以直接返回列表,或者集合、字典等存储了多个元素的的数据结构(实际上返回的是指向这些对象的引用变量)。

def test1():
    return [1,3,4]
print(id(test1()))
print(test1())
1611109184456
[1, 3, 4]

5 函数中的四种参数

5.1 位置参数

位置参数:调⽤函数时根据函数定义的参数位置来传递参数。
位置参数也就是最普通的参数,不可以不传入,且传入参数的顺序需要与函数的形参对应。

#1.位置参数,位置参数的顺序不能乱
def show(name,sex,age):
    print(f'名字是{name},性别是{sex},年龄是{age}')
show("张三","男",30)
名字是张三,性别是男,年龄是30

5.2 关键字参数

关键字参数:通过“键=值”形式加以指定。可以让函数更加清晰、容易使⽤,同时也清除了参数的顺序需求。
关键字参数必须要用形参名 加 = 加 实参 来传递,和键值对的含义很想,需要注意的是,关键字参数一定要在位置参数后面,且由于采用键和值一起输入的形式,关键字参数的顺序无关紧要。

def show(name,sex,age):
    print(f'名字是{name},性别是{sex},年龄是{age}')
#2.关键字参数,关键字参数间不分先后顺序,但如果参数列表存在位置参数,则位置参数必须要在关键字参数前
show("李四",sex="女",age=34)
show("李五",age=23,sex="男")
名字是李四,性别是女,年龄是34
名字是李五,性别是男,年龄是23

5.3 缺省参数

缺省参数也叫默认参数,⽤于定义函数,为参数提供默认值,调⽤函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调⽤)。

def show(name,age,sex="男"):
    print(f'name:{name},sex:{sex},age:{age}')
show("王五",23432)
show("王五",23432,sex="女")
name:王五,sex:,age:23432
name:王五,sex:,age:23432

5.4 不定长参数

不定⻓参数也叫可变参数。⽤于不确定调⽤的时候会传递多少个参数(不传参也可以)的场景。此时,可⽤包裹(packing)位置参数,或者包裹关键字参数,来进⾏参数传递,会显得⾮常⽅便。

5.4.1 包裹位置参数

包裹位置参数传递 ,接收所有位置参数,返回一个元组。参数前用一个*修饰。

def user_info(*args):
    print(args)
user_info("张三")
user_info("张三",234)
user_info("张三",234,"男")
('张三',)
('张三', 234)
('张三', 234, '男')
5.4.2 包裹关键字参数

包裹关键字参数传递,收集所有关键字,返回一个字典。参数用两个**修饰。

def user_info(**kwargs):
    for item in kwargs.items():
        print(item,end=" ")
user_info(name="张三",sex="男",age="34")
('name', '张三') ('sex', '男') ('age', '34') 

事实上,不论是包裹位置传递还是包裹关键字传递,都是一个组包的过程。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值