python函数(一)

函数介绍:

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数作用:

提高应用的模块性与代码的复用性。

自定义函数
定义规则:
  • 函数代码块以 def 关键词 开头 ,后接 函数标识符名称和圆括号()
  • 圆括号中间可以放入参数
  • 函数内容以冒号起始,并且缩进。
    示例:
def test(a):
	print(a)
注意:

函数只有在调用时才会执行,通过函数名(参数)进行调用。

函数的参数
参数类型:
参数类型
形参与实参
可变类型参数与不可变类型参数
位置参数
关键字参数
默认值参数
可变长度参数
形参与实参:
  • 形参就是函数定义中的参数,没有实际的值,通过别人赋值后才有意义,相当于变量。
  • 实参 就是 调用函数时传入的 参数,是一个实际存在的参数。
    示例:
def test(name):
	print(name)
test("kirito")

其中, name为形参,kirito为实参。

可变类型参数与不可变类型参数:
  • 不可变类型参数在函数体内对变量重新赋值,相当于重新开辟了一块内存来保存值
  • 可变类型参数在函数体内可以改变原有的值
    示例:
def test(age):
	age=16
	print("输出为:",a)
age=10
test(age)  # ==>输出为:16
print("冒出为:",age)  # ==>冒出为:10

因为16和10都是整数类型,是不可变类型,在函数外对age进行赋值,相当于在函数外重新开了开辟了一片内存空间。因而输出age时会输出10,而在函数内输出为16。

def test(li):
	li.extend([1,100])
	print("输出为:",li)  # ==>输出为:[1,2,3,4,5,100]
li = [2,3,4,5]
test(li)
print("冒出为:",li)  # ==>冒出为:[1,2,3,4,5,100]

因为li是列表,是可变数据类型,所以当函数执行时,li会将[1,100]扩展进去。然后再继续执行输出。虽然li内的元素发生了变化,但是内存地址没有改变,所以输出的结果自然也就相同。

位置参数:
  • 位置参数也就是实参与形参顺序一一对应,而不论变量名
    示例:
def test(name,age):
	print("姓名:",name,"年龄:",age)
test("kirito" ,16)  # ==>姓名: kirito 年龄: 16
def test(name,age):
	print("姓名:",name,"年龄:",age)
test(16 ,"kirito")  # ==>姓名: 16 年龄: kirito
关键字参数:
  • 以 形参 = 实参 形式指定,不论参数位置。
    示例:
def test(name,age):
	print("姓名:",name,"年龄:",age)
test(age = 16 , name = "kirito")  # ==>姓名: kirito 年龄: 16
默认值参数:
  • 形参处进行赋值,所以当调用时不传该参数就默认使用形参处的值。当调用时传了该参数,则覆盖掉默认参数。
def test(name = "kiroto",age = 10):
	print("姓名:",name,"年龄:",age)
test(age = 16)  # ==>姓名: kirito 年龄: 16

函数调用时没有设置name的值,所以就默认使用kirito作为参数了。

def test(name = "eiji",age = 10):
	print("姓名:",name,"年龄:",age)
test(name = "kirito" ,age = 16)  # ==>姓名: kirito 年龄: 16

函数调用时如果输入了新的参数,则调用新的参数。

可变长度参数:
  • *args 接收时会转为元组数据类型,args会将接收的所有参数存入元组。
  • **kwargs 接收时会转为字典数据类型,kwargs会将接收的所有参数存入字典。
    示例:
def test(*args):
    print(args)
test(1,2,3,4,5,6)  # ==>(1,2,3,4,5,6)
def test(**kwargs):
    print(kwargs)
test(name = "kiroto" ,age = 16)  # ==>{'name': 'kiroto', 'age': 16}
拆包
a,b,c=(1,2,3)
print(a, b, c)  # ==>1, 2, 3

这个例子的过程就叫做拆包。
上例中,用*args和**kwargs传参也可以用该方法进行拆包。
示例:

sao = ("kiroto", "男", 16)
def test(a, b,c):
	print("姓名:", a, "性别:", b, "年龄:", c)
test(*sao)  # ==>姓名: kiroto 性别: 男 年龄: 16

你可能感兴趣的:(python学习笔记)