python基础学习Day9 函数的初识,实参、形参、

1、函数

def my_len():
    l = [1,2,3,4,6,5,7]
    count = 0
    for i in l:
        count += 1
    print(count)
my_len()

定义的my_len()方法时,其结果也可以直接获取。

这里,我们将my_len()称为执行函数,其组成是由 :函数名()

函数的优点:

1. 函数可以减少代码的重复性

2. 函数可以增强代码的阅读性

2、return的作用

def func1():
    a = 1
    b = 2
    c = a + b
    return c
print(func1())

1. 函数中如果遇到return,则直接结束函数

2. 给函数中的执行者(函数名():整体是函数的执行者)返回值

3. return 返回单个值,即原封不动的返回(是什么类型,就返回什么类型值)

4. return 返回多个值,即返回一个元组,所有值都是元组的一个元素

注:在工作中,通常函数尽量不要使用print。

def func_1():
    a = 1
    b = 2
    c = a + b
    d = [1,2,3]
    e = (4,5,6)
    f = 'Chris'
    return c,d,e,f
print(func_1())     # (3, [1, 2, 3], (4, 5, 6), 'Chris')

3、实参

3.1位置实参    按照顺序,一一对应

def func1(x,y):
    print(x,y)
print(1,2)

3.2 关键字参数     可以不按照舒服,但是要一一对应

def func2 (x,y):
    return x + y
print(func2(y = 100,x = 32))

3.3 混合参数     可以不按照顺序,但是要一一对应

def func1(a,b,x,y):
    return a + b + x + y
print(func1(100,56,y= 100,x= 32))

def func1(a,b,n,x,y):
    return a + b + x + y
name = 'Chris'
print(func1(100 , 56, name, y= 100, x= 32))   # name是位置参数

4、形参

4.1   位置参数:按照顺序一一对应

def func(x,y,z):
    print(x,y,z)
func(1,2,3)

4.2   默认参数:给其传参,将默认参数覆盖,不传值时不报错,使用默认值

def func1(x,y,a= 666):
    print(x,y,a)
func1(1,2)        # 不传参,则为默认值    (1 2 666 )
func1(1,2,256)    # 传参,则将默认值覆盖   (1 2 256)
应用场合:不机场改变参数,但是一直再用
不断输入个人信息,如姓名与性别。并将信息写入文件中
方法一:
while 1:
    name,sex = input('请输入姓名与性别,中间用逗号分隔:').strip().replace('',',').split(',')
    if name.upper() == 'Q':
        break
    with open('a1.txt',encoding='utf-8',mode= 'a') as f1:
        f1.write('{}|{}
'.format(name,sex))

方法二:

def namelist(name,sex = ''):
    with open('a1.txt',encoding='utf-8',mode='a') as f1:
        f1.write('{}|{}
'.format(name,sex))
while 1:
    name,sex = input('请输入姓名,性别').strip().replace('',',').split(',')
    if name.upper() == 'Q':
        break
    if sex.strip():
        namelist(name ,sex)
    else:
        namelist(name)
namelist(name,sex)
默认参数的陷阱
默认参数若是可变数据类型(如:list),但他始终使用的是一个,即默认参数公用一个内存地址。
def func1(x,l1=[]):
    l1.append(x)
    return l1
ret = func1(1)
print(ret,id(ret))    # [1]        2426801554952
ret2 = func1(100)
print(ret2,id(ret2))    # [1, 100] 2426801554952
原文地址:https://www.cnblogs.com/youhongliang/p/9483526.html