python学习笔记之函数
python学习笔记之函数
函数
在python中函数是以def为开头的,后面跟上():括号里面是参数
一般来说函数的第一行会使用# 或者""" “”"来说明函数的用途,规格
用缩进来表示下面的代码在函数体中
最后用return 表达式来返回一个值
第一个例子:
def printf(str):
"""用于打印文字的函数"""
print(str*2,end='')
str='hello world '
printf(str) # 传入参数调用函数
运行结果:
hello world hello world
注意这里的参数传递
在python中,类型属于对象,变量没有类型
分为可更改与不可更改对象
- 不可变类型:整数、字符串、元组
- 可变类型: 列表、字典
第二个例子:
def change_int(a):
a += 10
b = 10
change_int(b)
print(b)
运行结果是:
10
为什么这里仍然输出的是10呢?
因为实例中有int对象2,变量b指向它,传参数的时候,是复制了变量b,此时b,a都指向了同一个int对象,而在函数中的赋值a+=10,相当于新生成了一个int值对象20,并让a指向它,然后函数退出来的时候,a就销毁了,最后输出的b的值不变仍然为10
那么要怎么样才能将运算结果带出来呢?
这里就需要用到return了
将第二个例子稍加改变一下
def change_int(a):
a += 10
return a
b = 10
x = change_int(b)
print(x)
输出结果:
20
这里函数返回了值a,也就是新的int对象x的值
再打印x就可以得到想要的结果20了
ps:在C语言中可以用指针来实现b值的改变
传可变参数
第三个例子
def changeable(list):
"""传入可以改变的列表"""
list.append([0,1,2]) # 添加0,1,2进入列表
print("函数内List的值:\n",list)
list = [7,8,9]
changeable(list)
print("函数外List的值:\n",list)
运行结果
函数内list的值:
[7, 8, 9, [0, 1, 2]]
函数外List的值:
[7, 8, 9, [0, 1, 2]]
可以看成list是发生改变了的
参数
分为
- 必须参数
- 关键字参数
- 默认参数
- 不定长参数
必须参数
以正确的顺序和数量传入参数,否则报错
可以参考第三个例子中的def changeable(list)就是必须参数
关键字参数
函数调用使用关键字参数来确定传入的参数值
顺序可以与声明的不一样
第四个例子
def introduce(name, age, address):
print("我是来自{}的{},今年{}岁".format(address,name,age)
introduce(age=19, address='广东', name='Justin')
# 这里参数的位置可以与声明的不一样
#python可以通过关键字来正确传入参数
运行结果:
我是来自广东的Justin,今年19岁
默认参数
若没有给定的实参,则调用函数中给定的参数值
仍然是第四个例子稍微改动一些:
def introduce(name, age, address='甘肃'):
# 注意这里默认参数在最后给出
# 要按照 必须、关键字、默认、不定的顺序来给出参数,否则会报错
print("我是来自{}的{},今年{}岁".format(address,name,age))
introduce(age=19, address='广东', name='Justin')
introduce(age=19, name='Justin')
运行结果
我是来自广东的Justin,今年19岁
我是来自甘肃的Justin,今年19岁
不定长参数
需要一个函数能够处理比当初声明时更多的参数,这些参数叫做不定长参数
下面来看一个例子
第五个例子
def test(test1, *args): # 这里*args就是不定参数
print(test1)
print(args) # 加了*的参数会以元组的方式导入,存放所有的不定参数
test(60, 70, 80)
运行结果:
60
(70, 80)
第六个例子
def test_2(test2, **args): # 这里**args就是不定参数
print(test2)
print(args) # 加了**的参数会以字典的方式导入,存放所有的不定参数的键对
test_2(60, name='Mike',age=20)
运行结果
60
{'name': 'Mike', 'age': 20}
匿名函数
lambda
第六个例子
sum = lambda arg1, arg2: arg1 * arg2
# 基本的就是 变量名 = lambda 变量1,变量2……:运算表达式
print(sum(10,20))
运行结果:
200
码字不易,各位看官老爷点赞收藏一下哟
本文地址:https://blog.csdn.net/Enternalwiser/article/details/107490114