python中函数的定义和调用注意事项
程序员文章站
2024-03-26 10:02:23
...
目录
1.函数的定义注意事项
1.函数的格式:
def 函数名(参数): #注意函数以冒号开始
"函数帮助说明" #一般放在函数第一行,冒号里用来对函数功能注意描述
函数体 #如果需要返回值,有return语句
2.定义函数演示:
#1.无参数的函数
def fc():
"函数说明"
print("无参数的函数")
return #加不加都无所谓
#2.有一个参数的函数,即使函数有参数,但也可以不需要返回值。如果需要返回值,加return.
def fc1(v1):
"fc1用来给数求平方值"
"这一行没写下,可以多行写哇"
v1 *= v1
# print(v1)
return v1 #return,调用函数以后返回的值,跟函数有没有参数没有关系。
---------------------------------------------------------------------------
def fc1_1(v1):
print(v1) #不需要返回值,可以不用加return
#3.多个参数的函数:只是定义了参数的个数,调用时理论上可以传入任意类型的数据
def fc2(v1,v2,v3):
v1+=1
v2+=2
v3 *= v1
return v1+v2+v3
#4.不定长参数,传参数时才确定输入几个参数的函数,后面单独博客分析
#5.参数与返回值之间的关系
函数根据有没有参数,有没有返回值,可以相互组合,一共有4种
无参数,无返回值
无参数,有返回值
有参数,无返回值
有参数,有返回值
2.函数调用的注意事项
def fc():
print("无参数的函数")
def fc1(v1):
v1 *= v1
return v1
def fc2(v1,v2,v3):
v1+=1
v2+=2
v3 *= v1
return v1+v2+v3
#函数的调用:直接函数名(参数)的形式即可调用函数
fc()
print(fc1(5)) #打印fc1函数返回值
sum=fc2(1,3,fc1(4)) #可以将函数的返回值作为参数传递过去,函数的嵌套调用
print(sum)
====================================================
无参数的函数
25
39
3.函数参数传递的本质
python 函数的参数传递:
1.不可变类型:类似java中的值传递,如 整数、字符串、元组。
如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a
本身。如下,只是值传递,所以别处修改,不会影响其本身的值
===============================================================================
def ChangeInt( v1 ):
v1= 10
return v1
b = 2
ChangeInt(b)
print( b ) # 结果是还是2.虽然调用了函数,在函数里修改了b的值,但是实际对b的值不影响。
================================================================================
2.可变类型:类似java中的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响。
如下因为是引用传递,一处修改值,处处修改
===============================================================================
def changeL(l1):
"修改传入的列表"
l1.append([1, 2, 3, 4])
print ("函数修改后的值: ", l1)
return l1
# 调用changeL函数
l2 = [10, 20, 30]
changeL(l2)
print ("调用函数以后取的函数外面值: ", l2)
================================================================================
函数修改后的值: [10, 20, 30, [1, 2, 3, 4]]
调用函数以后取的函数外面值:[10, 20, 30, [1, 2, 3, 4]]
要点总结:python 中一切都是对象,严格意义我们不能说值传递还是引用传递,应该说传不可变对象和传可变对象。
4.匿名的函数lambda的使用
#1.匿名函数lambda要点:
1. python用lambda表达式来构建匿名函数,所谓匿名没有def定义了。
2.lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去,比较简单。
3.语法格式:函数名=lambda arg1 ,arg2,.....argn:expression
#2.lambda表达式的用法:
#写一个求两个数之和的函数sum1
sum1 = lambda arg1, arg2: arg1 + arg2
p1 = lambda v1 ,v2 ,v3 :print(v1+v2+v3)
#调用sum函数
print(sum1(1,2))
p1("11","22","bb")
#3.lambda表达式只能封装一些简单的逻辑,不能封装一个代码块,否则报错
p2 = lambda a,b:( #报错
print(a)
print(b)
)
5.return语句的使用注意事项
#1.return “表达式”。不过表达式会进行运算化简,也可以直接return什么都不加
def fc6(v1,v2):
return(v1,v2)
#return v1+v2 直接返回两数之和
#2.每个函数只能有一个return 语句,多个return语句的话,后面的return不会执行
#2.因为函数执行到return语句后,就直接停止了,return后面的所以语句都不会执行
def fc7(v1,v2):
return v1
return v2
print("这个不会执行")
print (fc7(12,20)) #结果是12,下面的return语句不会执行
#3.return可以用来终止函数
def fc8(i):
sum = 0
while i<10:
sum += i
i += 1
print("sum is :", sum)
print("sum is :",sum)
------调用函数---------------------
fc8(0)
-----------------------------------
结果如下:
sum is : 0
sum is : 1
sum is : 3
sum is : 6
sum is : 10
sum is : 15
sum is : 21
sum is : 28
sum is : 36
sum is : 45
sum is : 45
------------------------------------------------
-----给函数里添加return语句----------------------
def fc9(i):
sum = 0
while i<10:
sum += i
i += 1
print("sum is :",sum)
return #return用在函数里,直接终止函数
print("sum is :",sum)
--------------------------------------------------
print(fc9(0))
------结果如下-------------------------------------
sum is : 0
None #当使用return时,却没有实际返回值,那么系统会将函数的返回值为None
#4.return一次只能返回一个值,如果想返回多个值用列表元组字典等封装
return [a,b,c]
return (a,b,c,d)
上一篇: Python高阶函数