python函数总结一

  • 一、函数的定义、调用
  • 1、函数的定义
  • 2、函数的调用
  • 二、函数参数
  • 1、要求
  • 2、传参方式
  • 3、可变参数
  • 4、参数解构


一、函数的定义、调用

1、函数的定义

①、函数的语句基本格式为:
def 函数名(参数列表):
 函数体(代码块)
 return 返回值 #return可以不加,默认返回None
②、函数名就是标识符,和普通命名要求一样
 语句块(代码块)必须缩进,约定为4个空格
 函数中的参数列表,只是一种符号表达,简称形参

#eg:
def cat(name):
    a = "这个猫的名字叫{}".format(name)
    return a
print(cat('小花'))

2、函数的调用

①、函数定义,只是为了声明一个函数,它不会被执行,需要调用
②、调用的方式:函数名上加上小括号,括号内写上参数
③、调用时的参数是实际参数,是实实在在传入的值,简称实参

#eg:
def cat(name):
    return "这个猫的名字叫{}".format(name)
print(cat('小花'))
a = cat('小杰')
print(a)
def dog(name):
    dog = "这个狗的名字叫{}".format(name)
print(dog("旺财")) #返回None

二、函数参数

1、要求

①、参数调用时传入的参数要和定义的个数相匹配(可变参数除外)
②、要求位置参数必须在关键字参数之前传入,位置参数是按位置对应的。

2、传参方式

①、位置参数
位置参数是按位置对应传入的

def people(name,height,age):
    print("我叫{}".format(name))
    print("我的身高是{}".format(height))
    print("我的年龄是{}".format(age))
people("小明",168,18)

②、关键字参数
关键字参数无关顺序

def people(name,height,age):
    print("我叫{}".format(name))
    print("我的身高是{}".format(height))
    print("我的年龄是{}".format(age))
people(name="小明",height=168,age=18)

③、位置,关键字混合

def people(name,height,age):
    print("我叫{}".format(name))
    print("我的身高是{}".format(height))
    print("我的年龄是{}".format(age))
#people("小明",heiget=168,18) 错误事例
#people(168,age = 18,name = "小明") 错误事例
people("小明",168,age = 18) #正确
people("小明",age = 18,height = 168) #正确

④、参数默认值(缺省值)
给定形参一个默认值,如果为传入足够的实参时默认使用

def people(name,height,age=18):  # 错误事例def people(name,height=168,age): 
    print("我叫{}".format(name))
    print("我的身高是{}".format(height))
    print("我的年龄是{}".format(age))

people("小明",18) # 同样没有缺省值的参数要在缺省值参数前

3、可变参数

①、位置可变参数(元组集合)

#def people(name,height,*score,age=18): # 缺省放在后面的坏处,如果用位置传参,age无法在传入参数
def people(name,height,age=18,*score): # 如果放在前面的坏处,age必须传参数。一般使用此种方法
    print("我叫{}".format(name))
    print("我的身高是{}".format(height))
    print("我的年龄是{}".format(age))
    print("我的成绩是{}".format(score))

people("小明",185,39,83,88,94)

②、关键词可变参数(字典集合)

def people(name,height,age=18,**score): 
    print("我叫{}".format(name))
    print("我的身高是{}".format(height))
    print("我的年龄是{}".format(age))
    print("我的成绩是{}".format(score))

people("小明",185,化学=39,语文=83,数学=88,外语=94) #注意可变位置参数不能放在缺省值前面

③、keyword-only(位置参数)参数另一种形式
在形参前加* 号,则在* 号后所有形参都必须以关键词参数传入

def people(name,height,*,age,**score): 
    print("我叫{}".format(name))
    print("我的身高是{}".format(height))
    print("我的年龄是{}".format(age))
    print("我的成绩是{}".format(score))

people("小明",185,化学=39,语文=83,数学=88,外语=94,age=20)

④、综上所述:参数列表的一般顺序为,普通参数、缺省参数、可变位置参数、keyword-only参数(后可带缺省值)、可变关键字参数

4、参数解构

①、定义:给函数提供实参的时候,可以在一个集合前使用* 或** ,把集合的结构解开,提取出所有的元素作为函数的实参
②、一般列表使用* 解构成位置参数

def people(name,height,age,*score): 
    print("我叫{}".format(name))
    print("我的身高是{}".format(height))
    print("我的年龄是{}".format(age))
    print("我的成绩是{}".format(score))
a = ["小明",185,20,39,83,88,94]
people(*a)

③、一般字典使用** 解构成关键字参数

def people(name,height,age,**score): 
    print("我叫{}".format(name))
    print("我的身高是{}".format(height))
    print("我的年龄是{}".format(age))
    print("我的成绩是{}".format(score))
a = {"化学":39,"语文":83,"数学":88,"外语":94,"age":20}
    
people("小明",185,**a)

下一节讲解函数作用域、函数嵌套、函数销毁