分类
Python1

函数

学习目标:
(1).了解什么是函数,以及python函数的分类
(2).学会创建函数,调用函数,并理解函数的参数与返回值
(3).理解变量的作用域,并能正确使用全局变量与局部变量

函数:可重用的代码块,一般一个函数完成一个特定功能。
例如:str()函数 将括号内数据复制一份加工成一个新的字符串
Python中函数的分类
(1).内置函数:
前面使用的str()、list()、len()等这些都是内置函数,可以拿来直接使用。
(2).标准库函数:
通过import语句导入库,然后就可以使用其中定义的函数,如:Random库的randint()。
(3).第三方库函数:
Python社区有很多高质量的库。下载安装这些库后,也是通过import语句导入,然后可以使用这些第三方库中的函数,如:easygui模块。
(4).自定义函数
开发中适应项目需求定义的函数。
函数的定义:格式如下
def 函数名(参数) :
    函数体

函数的参数:
函数执行过程中,从外部传入的数据,可以理解为在使用函数时给函数输入的数据。

函数的返回值:函数执行后的结果
(1).如果函数体中包含return语句,则结束函数执行并返回return后面的值
(2).如果函数体中不包含return语句,则返回None值

变量的作用域:变量起作用的范围
根据起作用的范围不同,变量可分为:全局变量、局部变量
(1)全局变量:
1.1. 在函数体或类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。
1.2. 函数中使用全局变量会降低函数的通用性和可读性,应尽量避免函数中使用全局变量
1.3. 函数内要改变全局变量的值,使用global声明一下
(2)局部变量:
2.1. 在函数体中(包含形式参数)声明的变量
2.2. 局部变量的引用比全局变量快,优先考虑使用
2.3. 如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量
2.4. 函数外不允许使用局部变量

函数小结:
用def来定义函数,通过函数名(参数)来调用函数。调用函数之前,必须要先定义函数。
函数参数:
(1)圆括号内是形式参数,有多个参数则使用逗号隔开
(2)无参数,也必须保留空的圆括号
(3)实参必须与形参一一对应
(4)调用函数时,传入实参相当于给形参变量进行赋值操作
return返回值:
(1)如果函数体中包含return语句,则结束函数执行并返回值;
(2)如果函数体中不包含return语句,则返回None值。
(3)如果要返回多个值,可以将要返回的值存入列表,然后返回一个列表。

附1.无参数函数

def f1():   #函数定义,函数名为f1,无参数
    print("姓名:","张三")
    print("总成绩:",278)
    
f1()  #执行一次f1函数
f1()  #再执行一次f1函数

附2.有参数函数

def f2(name,score): #函数定义,函数名为f2,两个输入参数
    print("姓名",name)
    print("总成绩",score)
f2("张三",278)  #执行一次f1函数
f2("李四",290)  #再执行一次f2函数

附3.用列表做输入参数

def f3(name,scoreList): #函数的输入参数中有一个列表scoreList
    sum_score = 0
    print("姓名",name)
    for i in scoreList:
        sum_score += i
    print("总成绩",sum_score)
f3("张三",[98,88,90]) #执行一次f3函数
f3("李四",[77,79,95]) #再执行一次f3函数

附4.有参数有返回值

def f5(name,score): #score是一个列表
    sum_score = 0
    for i in score:
        sum_score += i
    print("姓名:",name)
    return sum_score   #返回分数的和

result = f5("张三",[89,92,70])
print(result)    #输出函数的返回值

附5. 注意变量的作用域

def f5(name,score):
    global math   #强行使用全局变量
    math = math - 50
    print(math)
    sum_score = 0 #函数内的局部变量
    for i in score:
        sum_score += i
    print(name)
    return sum_score

#print(sum_score)#前面代码错误,函数外部不能使用函数内的局部变量
name1 = input("请输入学员姓名")
chinese = int(input("请输入"+name1+"的语文成绩"))
math = int(input("请输入"+name1+"的数学成绩"))
english = int(input("请输入"+name1+"的英语成绩"))

result = f5(name1,[chinese,math,english])
if  result >= 270:
    print("成绩优秀")
else:
    print("继续努力")