七、python函数

一、函数定义

输入一定的数据后,能够根据里面的执行步骤,算出另一些数据的值

def  函数的名称(函数参数1,参数2~~~):
       '''
         文档字符串 docstring
         函数的注释,这个函数是干嘛用的
         参数:
         返回值:
        '''
       函数体(函数的具体执行的逻辑)
       return 函数的返回值(输出)
 
2)函数调用
def add(a,b):
    '''两个数相加'''
    c = a + b
    return c
sum = add(3,4)
print(sum)

3)函数返回值return

函数里面的return表示函数的返回值,在调用函数之后可以通过变量进行接收

函数体遇到return就终止运行,相当于for/while中的break

def add(a,b):
    if a > 100:
        return a + b  #return终止函数,后面就不会执行
    return a + b*3
print(add(150,50))

函数的输出数据是由return决定的,函数没有retruen,得到的数据就是None

def add(a,b):
    c = a + b
print(add(1,2))  #结果是none
#定义一个有返回值的append函数
def append(origin_list,element):
    origin_list.append(element)
    return origin_list
print(append(['zjx'],'python')) 
#结果['zjx', 'python']

注意:没有定义的函数,无法调用。

4)函数的参数

形式参数:函数在定义的时候写的参数,相当于变量名,如上的origin_list

实际参数:函数在调用的时候写的参数,他是值,如上的['zjx']

函数从调用的角度来说,分为形式参数和实际 参数。形参是指函数创建和定义过程中小括号里的参数;而实参指得是函数在被调用过程中传递进来的参数

def add(a,b):
    c = a + b
print(add(1,2))  #a,b是形参,1,2是实参

位置参数:形式参数和实际参数要一一按照顺序对应

def append(origin_list,element):
    origin_list.append(element)
    return origin_list
print(append(['zjx'],'python')) 

5)函数文档(.__doc__)

函数文档的作用是描述该函数的功能,给函数写文档是为了让别人可以更好的理解你的函数。

函数文档字符串可以通过特殊属性 ._ _doc_ _

6)默认参数

在函数定义的时候给形式参数一个默认值,有实参时按实参,无实参时按形参的默认值

可以简化函数调用过程,只需要传入少量参数就可以实现调用过程

如果调用函数的时候传入了这个实际参数,默认值不会生效

默认参数必须放到为位置参数的后面

def append(origin_list,element="hello"):
    origin_list.append(element)
    return origin_list
print(append(['zjx'])) 

7)关键字参数

可以提高函数调用时候的可读性,更加容易理解实际参数的意义

关键字的名字就是形式参数

关键字参数区别位置参数:可以不按照顺序调用

关键字参数也要放到位置参数后面

def get_name(first_name,middle_name,last_name):
    '''获取名字'''
    return first_name + middle_name + last_name
print(get_name( middle_name = 'jing',first_name='zhang',last_name='xuan'))    #关键字参数在调用的时候,可以不按照顺序

8)可变长参数

1.位置可变长参数         *args       函数里面(元组)

*names:在函数内部的表现形式:names是一个元组

可以接收从函数调用的时候,多余的位置参数

加在其他位置参数的后面
def get_name(firstname,*names):
  print(firstname)
  print(names)
  return firstname
get_name('zhang','jingxue','好看')   
'''
结果:
zhang
('jingxue', '好看')
'''

可不可以只有*names   可以的

def get_name(*names):
  print(names)
get_name('jingxue','好看')   

'''
结果:
('jingxue', '好看')
'''


2.关键字可变长参数    ** kwargs函数里面得到的是{字典}

# 调用函数时**kwargs不传入参数,返回的是空字典{}
def
get_name(*names,**kwargs): print(names) print(kwargs) get_name('zjx','wang') ''' 结果: ('zjx', 'wang') {} '''
# 调用函数时**kwargs传入参数,返回的是字典{},以key-value形式存储
def
get_name(*names,**kwargs): print(names) print(kwargs) get_name('zjx','wang',middle='hello',last='python') ''' 结果: ('zjx', 'wang') {'middle': 'hello', 'last': 'python'} '''

注意:两个*代表关键字参数,一个*号代表位置参数。关键字参数要放在位置参数后面

      位置可变长参数*names 要放在关键字可变长参数**kwargs的前面

 
 
 
原文地址:https://www.cnblogs.com/zhangjx2457/p/13628924.html