python中函数的定义和调用注意事项

目录

1.函数的定义注意事项

2.函数调用的注意事项 

3.函数参数传递的本质

4.匿名的函数lambda的使用

5.return语句的使用注意事项


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

猜你喜欢

转载自blog.csdn.net/qq_26442553/article/details/81563843