当前位置 : 主页 > 编程语言 > python >

二、Python开发---11、函数

来源:互联网 收集:自由互联 发布时间:2021-06-25
定义函数 格式: def 函数名(参数): 函数体 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋值给一个变量,相当于给这个函数起了一个别名 def Pname(): # 当前函数不放参数

定义函数

  格式:

    def 函数名(参数):     

      函数体

  函数名其实就是指向一个函数对象的引用,完全可以把函数名赋值给一个变量,相当于给这个函数起了一个别名

def Pname():        #当前函数不放参数
     print(大家好我是杰大哥!)
Pname()             #调用函数  执行了函数里面的代码
pri = Pname         #将函数名赋值给另一个变量,相当于给当前函数取一个别名
pri()               #pri()的作用等于Pname()

函数参数分类

  总体上分为形参和实参

  1、必备参数

    向函数传递参数的方式有很多,通过实参和形参的顺序对应,这就是位置实参,参数的个数不能少,不能多,参数的位置要一一对应,只有位置一致,才能被正确匹配

  2、关键字参数

    关键字实参是传递给函数的名称-值对。直接在实参中将名称和值关联起来,因此向函数传递实参时不会混淆。、使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值

  3、默认参数

    函数定义的时候,设置的参数是形参。那么也可以给每个形参指定一个默认值。当调用函数时,如果没有传入实参,就使用形参的默认值。如果调用的时候传入了实参,那么程序将使用传入的实

  4、不定长参数

     可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数。加了星号(*)的变量名会存放所有未命名的变量参数,按元组的类型存放,加了(**)会存放所有命名的变量参数,按字典的类型存放

def Pname(userName):                      #userName为形参  形参的名字是自定义的
    print(大家好我是%s同学!%userName)
Pname(刘德华)                            #传递了一个实参  ‘刘德华‘

#必备参数
def getInfo(name,address):
    print(大家好我叫%s,我来自%s%(name,address))
getInfo(刘德华,香港)                   #第一个实参对应了第一个形参,第二实参对应第二个形参
# getInfo(‘刘德华‘)                         #形参有两个,调用的时候,实参也要传递两个,否则会报错
                                          #参数的个数不能少,不能多。 参数的位置要一一对应

#关键字参数
def getInfo(name,address):
    print(大家好我叫%s,我来自%s%(name,address))
getInfo(name=刘德华,address=香港)      #给实参加上关键字  关键字对应着形参

#参数的默认值
def getInfo(name,address = 香港):       #默认值参数,就是在声明函数的时候给形参赋值
    print(大家好我叫%s,我来自%s%(name,address))
getInfo(刘德华)                         #有默认值的形参,可以不用传递
getInfo(刘德华,九龙)                   #传递参数时,会覆盖原来的默认值
‘‘‘
    不定长参数
    *args 是接受所有未命名的参数(关键字)
    **agrs2 是接受所有命名的参数(带关键字的)
    输出为
        大家好我叫刘德华,我来自九龙
        (‘a‘, ‘b‘, ‘c‘, ‘d‘)
        {‘age‘: 18}
‘‘‘
def getInfo(name,address,*args,**agrs2):
    print(大家好我叫%s,我来自%s%(name,address))
    print(args)                          #args 是一个元组类型
    print(agrs2)                         #字典数据类型
getInfo(刘德华,九龙,a,b,c,d,age = 18)

可变对象与不可变对象的传递

   不可变类型:整数、字符串、元组。如当调用函数fun(a)时,传递的只是a的值,没有影响a对象本身。在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身

  可变类型:列表、字典。如当调用函数fun(la)时,则是将 la 真正的传过去,修改后fun外部的la也会受影响

#不可变对象的传递——值的传递
def fun(args):
    args = hello            #重新赋值
    print(args)               #输出为hello
str1 = baby                 #声明一个字符串的变量   不可变数据类型
fun(str1)                     #将该字符串传递到函数中
print(str1)                   #输出为baby  并没有被改变
#可变对象的传递——引用传递
def fun(args):
    args[0] = hello        #重新赋值
    print(args)              #输出为[‘hello‘, ‘come on‘]
list01 = [baby,come on]  #声明一个列表   可变数据类型
fun(list01)                  #将该字符串传递到函数中
print(list01)                #输出为[‘hello‘, ‘come on‘]  传递的是对象本身,函数里面被修改了值,原对象也会跟着修改

函数返回值

  1、return语句

    return语句用于退出函数,选择性的向调用者返回一个表达式。直接return的语句,即不写任何表达式,默认返回None,return后语句不再执行

网友评论