Python(10):函数

函数

函数是组织好的,可以重复使用,用起来功能单一
函数提供应用模块性和代码的重复利用率

print("-----1.定义一个函数------")


def hello(str):
    "我的第一个定义函数"
    print("传递过来的数据为", str)
    return


hello('生活不容易,不能放弃希望,相信自己还能干10年')

# 计算面积函数
def area(width, height):
    return width * height


w = 5
h = 7
print('width=', w, 'height', h, 'area=', area(w, h))

打印:

-----1.定义一个函数------
传递过来的数据为 生活不容易,不能放弃希望,相信自己还能干10年
width= 5 height 7 area= 35

我们还可以在函数上加上解释,例如:

def printme(str):
    "打印任何一个"
    print(str)
    return

printme(123)

参数传递

不可变参数传递

函数中不可变参数传递包括string number tuple

# 不可变参数传递 number,string,tuple
def change(a):
    a = 11


b = 2
change(b)
print(b)

打印:

2

可以看到实例中有 int 对象 2,指向它的变量是 b,在传递给 ChangeInt 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 Int 对象,在 a=11 时,则新生成一个 int 值对象 11,并让 a 指向它。

可变参数传递

包括 list set dictionary
可变参数会改变内部的值
例子:

# 可变参数对象传递 list set dictionary
def chanageme(mylist):
    "append list "
    mylist.append([1, 3, 4, 5])
    print("函数内的列表打印:", mylist)
    return


mylist = [12, 53, 123]
chanageme(mylist)
print("函数外的值打印:", mylist)

打印:

函数内的列表打印: [12, 53, 123, [1, 3, 4, 5]]
函数外的值打印: [12, 53, 123, [1, 3, 4, 5]]

关键字参数

关键字参数在调用的时候 变量[var] = 值[value],且可以按照不指定函数顺序

def printInfo(name, age):
    "打印年龄和姓名"
    print("年龄=", age)
    print("姓名=", name)
    return


printInfo(age=12, name='shasha')

打印:

年龄= 12
姓名= shasha

调用函数时,如果没有传递参数,则会使用默认参数

def printInfo(name, age=34):
    "打印年龄和姓名"
    print("年龄=", age)
    print("姓名=", name)
    return


printInfo(name='shasha')

打印:

年龄= 34
姓名= shasha

可以看到,年龄使用了默认年龄34岁

可变长参数

可变长参数,有时候可能处理的时候比声明更多的参数 加*星号 会以元组tuple导入,存放未命名的参数

def print10(arg1, *vartuple):
    "打印任何传入参数"
    print("输出:")
    print(arg1)
    print(vartuple)
    return


print10(69, 12, 213)
print10(50)

打印:

输出:
69
(12, 213)
输出:
50
()

还有一种是双星**,其实是以字典的形式导入

def print11(arg1, **argss):
    "函数打印。。。"
    print("输出:")
    print(arg1)
    print(argss)
    return


print11(1, a=2, b=3)

打印:

输出:
1
{'a': 2, 'b': 3}

匿名函数

其实就是lambda

print('-------匿名函数-------')
sum = lambda a, b: a + b
print("相加侯的值为:", sum(12, 32))
print("相加侯的值为:", sum(20, 20))

打印:

-------匿名函数-------
相加侯的值为: 44
相加侯的值为: 40

匿名函数只能是简单的表达式,复杂的最好不要使用

强制位参数

这个是 python3.8才有的一个特性,/ 用来指定函数形参必须使用指定位置参数,不能使用关键字参数形式

def f(a, bd, /, c, d):
    print(a,bd,c,d)
    return



f(12, 2, 4, 5)

打印:

12 2 4 5

end!

你可能感兴趣的