python中函数的定义和调⽤注意事项⽬录
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
python新手函数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)
)
#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)
统⼀声明:关于原创博客内容,可能会有部分内容参考⾃互联⽹,如有原创链接会声明引⽤;如不到原创链接,在此声明如有侵权请联系删除哈。关于转载博客,如有原创链接会声明;如不到原创链接,在此声明如有侵权请联系删除哈。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论