python学习笔记day9:函数

本文详细介绍了Python中的函数,包括函数的返回值类型,如无返回值、单个返回值和多个返回值的情况。在返回多个值时,会以元组形式返回。接着讨论了参数的种类,如位置参数、关键字参数和混合使用方式,以及形参中的位置参数、默认参数和动态参数。动态参数包括*args用于接收位置参数的元组和**kwargs用于接收关键字参数的字典。最后提到了函数的注释,对于代码可读性的重要性。

函数:定义之后可以任何需要他的地方调用这个函数
如果函数没有定义返回值,用户去取函数的返回值的话,默认返回None
1.返回值的三种情况:
1.1 没有返回值
1.1.1 没写return

def func():
    print(s)
s = "今天天气好"
func()

1.1.2 只写return,后面没有数值,return在函数中一旦执行了return后面的代码就不执行了

def func1():
    l = ['景老板', '三毛']
    for i in l:
        if "三毛" in i:
            return  #此处return会直接跳出函数func
        #   break   #但是break只会使这个for循环结束,如果还有别的语句在for循环以外,还会继续执行
    print("函数执行最后一句")
func1()

1.2 只有一个返回值:可以返回任意数据类型

def func2():
    return [1, 2, 3]
print(func2())

1.3 多个返回值:有几个返回值就应该有几个接收值
返回多个值如果只用一个值接收的话,那么就以元祖的形式接收,元祖是不可修改的数据类型
在python中默认如果一个值对应多个赋值就会转变成元组数据类型

def func3():
    return 1, 2
r1, r2 =func3()
print(r1, r2)

2.参数
2.1 实参
2.1.1 位置参数:按照位置传参

def func4(a,b):
    print(a,b)
func4(1, 2)

2.1.2 关键字传参,按照关键字传

def func4(a, b):
    print(a, b)
func4(b=1, a=2)

2.1.3 也可以两种方法混着用,但是必须先按照位置传参,再按照关键字传参,不能给用一个变量传多个值

def func4(a, b):
    print(a, b)
func4(1, b = 2)

2.2 形参
2.2.1 位置参数:必须传,有几个参数传几个值
2.2.2 默认参数:可以不传,如果不传就用默认参数,如果传了就用传入的参数

def classmate(name , sex = "男"):
    print("%s : %s"%(name, sex))

classmate("jerry")
classmate("tony", "女")
classmate("alex")

特别注意:如果默认参数是一个可变数据类型,类似列表,字典那么每一次调用函数的时候,如果不传值就共用这个数据类型的资源。

# 列表示例
def func(l = []):
    l.append(1)
    print(l)

func()
func([2])
func()
# 字典示例
def func(k, l={} ):
    l.setdefault(k, "M")
    print(l)

func(1)
func(2)
func(3)

2.2.3 动态参数 : 可以接受任意多个参数,参数名之前加*,args必须在kwargs之前
(1) *args:以元祖的形式,args只是一个变量名可以改变,但是习惯使用args不能接收关键字参数

def sum (*args):
    n = 0
    for i in args:
        n += i
    return n
print(sum(1,2,2,3))

(2) **kwargs:以字典的形式存储,接收关键字参数,默认参数传入的顺序是不定的可以再动态参数以后

def func5(k=None, **kwargs):
    print(k,kwargs)
func5(k=1,a=1, b=2, c=3)
func5(a=2, b=2, k=1)
func5(a=6)

2.3.4 动态参数的另一种传法
(1)针对*args,

def  func6(*args):   #  而站在形参的角度上,给变量加上*就是组合所有传来的值
    print(args)
func6(1, 2, 3, 4, 5)
l=[1, 2, 3, 4, 5, 6]
func6(*l)  # 站在实参的角度,给序列加上一个*就是将序列按顺序打散

(2)针对**kwargs

def func7(**kwargs):
    print(kwargs)
d={"a":1, "b":2}
func7(**d)

3.函数的注释:

def func():
    '''
    这个函数实现了什么功能
    第一个参数的意义
    第二个参数的意义
    :return:是字符串或者列表的长度
    '''
    pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值