跟着太白老师学python 09day 初识函数

函数的最主要的目的:封装一个功能

函数的优点:

减少代码的复用率, 增加代码的阅读性

def my_len(arvg):  # arvg 形参  my_len函数名,应该具有代表性,让你一看就明白
    # 函数体
    count = 0
    for i in arvg:
        count += 1
    return count
print(my_len(s))  # s实参

return 特点:遇到return结束程序, 返回一些信息

如果当只有一个返回值时,返回是什么就是什么类型的

如果当有多个返回值时,将返回一个元组,元组里是需要返回的值

def fun1():
    a = 1
    b = 2
    c = a + b
    d = 'alex'
    return c, d
print(fun1())
>>>(3, 'alex')

函数传参:

           #实参    函数执行者实际的参数

                         1.位置参数

                         2.关键字参数

                         3. 混合参数

                                   1.位置参数:按照位置一一对应

def fun2(a, b, c):
    print(a, b, c)

fun2(1, 2, 3)

>>> 1 2 3

                                   2 关键字参数: 按照所给参数一一对应

def func3(x, y):
    return x, y
print(func3(y=1, x=2))

>>>>(2, 1)

                                  3. 混合参数 由位置参数和关键字参数组成, 关键字参数一定要在位置参数的后面

def func4(x, y, z):
    return x, y, z
print(func4(1, z=2, y=3))

               形参

                         1.位置参数

                         2.默认参数

                                    1 位置参数: 按照位置一一对应

def func5(x, y):
    return x + y

print(func5(1, 2))

                                     2. 默认参数,如果不传,就默认使用,函数里的默认值,如果传就使用传入的值,默认值设置一般考虑使用量比较多的情况

def login(name, sex=''):
    f = open('a1.txt', encoding='utf-8', mode='a') #打开文件写入
    f.write('{}|{}
'.format(name,sex))
    f.close()

while True:
    content = input('请输入姓名和性别,默认为Q,按,分隔, 按Q退出')
    name, sex = content.strip().split(',')
    if name.upper() == 'Q':
        break
    if sex: #如果有值,就传入
        login(name, sex)
    else: #没有值,就默认使用sex='男'
        login(name)

                                     默认参数的注意事项,这里有坑

   

def func6(x, l1=[]):
    l1.append(x)
    return l1
tag_1 = func6(1)
print(tag_1, id(tag_1))
tag_2 = func6(2)
print(tag_2, id(tag_2))

>>>>

[1] 4612744
[1, 2] 4612744



我们可以发现两次执行时的l1可变参数,指向的是同一个内存地址,因此1和2都被添加到同一个l1中,所以在使用默认参数的时候,最好不要使用可变数字类型,不可变数字类型包括数字,字母,布尔值,元组,一般都使用前3个来设置默认参数.

如果非要是使用,我们需要使用 l = [],重新复制,更换 l 的地址

def func6(x, l=[]):
    l = []
    l.append(x)
    return l
tag_1 = func6(1)
print(tag_1, id(tag_1))
tag_2 = func6(2)
print(tag_2, id(tag_2))

 三元运算 是一种判断的简便写法

def func7(x, y):
    return x if x > y else y

print(func7(1, 2))

                           

原文地址:https://www.cnblogs.com/my-love-is-python/p/9481895.html