函数
函数的定义及作用:
函数是为了提高效率和代码的重用率,函数是对特定功能进行封装
代码格式
格式: def 函数名():
代码逻辑
函数的调用 函数不调用不执行
格式: 函数名()
def info():
print("你好!")
print("世界!")
info()
注意:
重名函数 后面的函数会覆盖前面的函数
def info():
print("hello!")
print("world!")
info()
函数的参数
函数的参数包含:实参(实际参数)和形参(形式参数),形参的作用是等待接收实参
def info(a,b):
sum=a+b
print(sum)
函数的返回值
函数的返回值:可以将调用函数的结果进行再次调用
def info(a,b):
ret=a+b
print(ret)
return # 返回
sum=info(10,20) # 将调用函数的结果可以交给一个变量进行接收 没有返回值则不能再次调用
print(sum)
return的作用:
1.如果一个函数中存在多个return,只要执行了一个return就代表这个函数已经执行完成
2.return可以提前结束程序
函数的文档说明
函数的文档说明—对函数进行说明解释
def num(a, b, c):
"""
该函数是用来计算3个数相加的结果
:param a: 数字类型
:param b: 数字类型
:param c: 数字类型
:return: 3个数求和结果的返回值
"""
return a + b + c
sum = num(10, 20, 30)
print(sum)
单击函数名 ctrl+q 可以查看该函数的解释说明
help(函数名) 可以查看该函数的解释说明
函数的全局变量和局部变量
局部变量:定义在函数内部的变量,局部变量只能在函数内部进行调用
全局变量:定义在函数外部的变量全局变量作用在整个模块内部
在函数中,局部变量即使同名,也因为作用域不同没有影响
定义一个和全局变量同名的内部变量,在函数内部优先使用内部变量
局部变量只能在内部调用 在全局调用会报错NameError全局
global 函数: 用内部的变量修改同名的全局变量
函数的缺省参数
缺省参数:如果一个函数有参数, 而且这个参数设置了默认值, 称为缺省参数
如果一个形参没有对应的实参,就会使用默认值
作用:
1.简化了函数的调用
2.一个函数如果有缺省参数,那么缺省参数之后必须都是缺省参数
不定长参数的元组
不定长参数也是缺省参数
# 不定长参数的元组是通过下标索引来获取参数的
def args(*args): # * 代表的是不定长参数 args 参数名
print(args[0]) # 输出参数中的第一个数
print(args) # 输出参数
print(type(args)) # 输出数据类型 tuple类型
print(len(args)) # 输出参数的个数
args(1, 2, 3, 4, 5, 6, 7, 8, 9) # 调用函数
不定长参数的字典
调用函数的时候不知道会传入多少个实参
不定长函数的字典是通过关键字(key)来获取参数的
def kwargs(**kwargs):
print(kwargs)
print(type(kwargs)) # 字典类型(dict)
print(len(kwargs))
print(kwargs["name"])
print(kwargs["age"])
kwargs(name="小明",age=16)
函数的拆包和组包
拆包:将元组中的元素进行拆分
拆包的作用:适用于容器类型
拆包格式:
my_tuple = ("张三", 20, "男")
name, age, sex = my_tuple
print(name)
print(age)
print(sex)
组包格式:
new_name = "张三"
new_age = 13
new_sex = "男"
new_tuple = ()
new_tuple = new_name, new_age, new_sex
print(new_tuple)
两个变量之间的交换:
# 方法一
a = 20
b = 15
print("-----交换前:a=%d,b=%d----" % (a, b))
c = a
a = b
b = c
print("-----交换后:a=%d,b=%d----" % (a, b))
# 方法二
a = 20
b = 15
print("-----交换前:a=%d,b=%d----" % (a, b))
a = a + b
b = a - b
a = a - b
print("-----交换后:a=%d,b=%d----" % (a, b))
# 方法三
a = 20
b = 15
print("-----交换前:a=%d,b=%d----" % (a, b))
a, b = b, a
print("-----交换后:a=%d,b=%d----" % (a, b))
函数的引用
引用指在计算机中变量记录数据的一种方式 (数据通常装在硬盘或者内存空间中)
在Python中所有的数据都是引用类型
id( ) 查看一个变量在内存中的地址的标识(独立序号)
a = 20
b = a
print(id(a))
print(id(b))
# a和b的地址是一样的
a = a + b
print(id(a))
# a的值发生改变所以地址也发生改变 但b没发生改变
一个变量发生改变 变量的地址一定会发生改变
如果一个变量拥有了一个内存地址,那它就可以为所欲为
# 改变赋值 如果地址未改变,则这个数据类型是可变的数据类型 反之则这个数据类型是不可变的数据类型
# 可变的数据类型(以数列为例)
a = [1, 2, 3, 4, 5, 6]
print(id(a))
a.append(7)
print(id(a))
# 不可变的数据类型(以元组为例)
b = (1, 2, 3, 4, 5, 6)
print(id(b))
b = b + b
print(id(b))
# 元组是不可变的数据类型 无论它的值是否发生改变 都会使用不同的地址
可变的数据类型: list(列表),dict(字典),集合(ret)
b=b+b是重新赋值
b+=b 是对原来的数据进行修改
不可变的数据类型: str(字符串),元组(tuple)
b=b+b b+=b 都是重新赋值