python基础笔记4(函数,可变与不可变对象,局部与全局变量,参数的传递)
程序员文章站
2024-02-17 21:49:28
...
一、函数
又叫方法,是用代码编写的能实现某一功能的代码块
定义:
def 函数名(形参列表):
函数体
return 返回值
def my_Sum(a,b):
sum = a + b
return sum
调用
语法一:
函数名(实参)
A= my_Sum(1,2)
print(A)
语法二:(推荐)
为防止不同类,包中相同函数名造成调用混乱,使用判断条件
if __name__ == ''__main__'':
函数名(实参)
if __name__ =='__main__':
B = my_Sum(2,3)
print(B)
return返回值
return:函数中遇到return时直接跳出函数,后面的语句不会执行。
当函数没有return时,默认返回None
当返回值为多个数据时,返回值用 逗号 隔开
若接收是对象只有一个时,返回值会以元组的形式返回;
若以相同长度对象接收时,返回值会依次对应赋值,接收对象要用 逗号 隔开
def my_Sum(a,b):
sum = a + b
DEL = a*b
return sum,DEL
A,DEL= my_Sum(1,2)
print(A)
print(DEL)
print(A,DEL)
二、可变对象与不可变对象
不可变对象
数值型,字符型,元组,
修改对象的值之后,对象的前后的内存地址发生改变
a = '1234'
print(id(a))
a = '1a34'
print(id(a))
可变对象
列表,集合,字典
修改对象的值之后,对象的前后内存地址不会发生改变,还是指向像相同的内存地址
id()函数查看数据的内存地址
a = [1,2]
print(a)
print(id(a))
a.append(3)
print(a)
print(id(a))
不可变对象当作参数传入函数中,外面的对象本身不变;
可变对象当作参数传入函数中,外面的对象会跟着改变;
三、局部变量与全局变量
全局变量:定义在函数外部,作用于整个代码
局部变量:定义在函数内部,值作用于函数内部
关键字global,声明局部变量为全局变量
a = 1
print(a)
def sda():
global a
a = 2
sda()# 调用函数
print(a)# 再次输出a
四、参数的传递
参数传递四种方式
1.必须参数
实参的个数、顺序、类型、与形参必须一致
2.关键字参数
函数调用时用形参来赋值带入,此时实参的顺序与形参的顺序可以不一致
def sda(a,b):
sum = a+b
return sum
print(sda(b = 1,a = 2))
3.默认参数
在函数定义时候给的初始值,不影响调用时传入的实参,只是在部分函数中为保证函数的完整性
语法
def 函数名(形参 = 初始值):
……
例:
def sda(a=10,b=10):
sum = a+b
return sum
print(sda())
print(sda(1,3))
4.不定长参数
在实参个数不定时使用
语法:
def 函数名(*参数名):
for i in 参数名:
循环体
return 返回值
def sum1(*number):
total = 0
for i in number:
total += i
return total
print(sum1(1,2,3,4))
五、匿名函数
lambda关键字
语法
lambda 形参:执行语句
匿名函数没有return返回,执行语句本身就是返回值
参数可以使多个
调用:
直接将语句赋值给一个变量,然后调用
调用语句
赋值变量名(实参)
a = lambda x,y,z:x+y+z # 定义匿名函数
p=a(12,2,3)#调用匿名函数
print(p) # 打印输出函数值
使用场景,多为一次性使用的函数,一般是单行语句,懒得起名的函数