目录
函数:是组织好的,可重复使用的,用来实现特定功能的代码段。
一、函数的基本语法
函数的定义
def 定义函数
def 函数名(传入参数):
函数体
return 返回值
在不需要传入参数时,传入参数可以不写,但是括号不能少;没有返回值时,返回值也可以不写。
函数调用
函数调用的格式:
函数名(传入参数)
函数参数
以下是一个实现两个数相加的程序:
def add(x, y):
return x + y
a = int(input())
b = int(input())
ret = add(a, b)
print(ret)
在这个函数中,x、y作为传入参数,中间用逗号间隔,在调用函数时,应根据函数定义时设定的传入参数格式按顺序输入。
程序中输入的a、b为实参(实际参数),表示执行函数时真正调用的参数,而函数中的x、y为形参(形式参数),用于声明函数将要使用两个参数。
函数的返回值
函数的返回值即为:当程序调用函数时,在有需要的时候向调用它的对象返回的数据,用 return 进行返回,返回的可以是一个具体的值,也可以是一个表达式。
None类型
None 表示没有、空,即return None和不写返回值效果是一样的
由上面两图可知,None 等价于无返回值
除了这种无意义的用法外,None 还可以用于以下情况:
1、在判断语句中,None 等价于 False,即为0
2、用于标记某处需要返回值,但返回值未设定的地方
函数的嵌套调用
在一个函数内调用另一个函数
直接写函数即可
当在函数b的函数体中调用函数a,则调用函数a时,会把a执行完毕后再继续b中剩下的流程
函数说明文档
我们可以以多行注释的方式给函数添加说明文档,用于说明函数的作用
def test()
"""
说明文档
"""
函数体
pycahrm会自动补齐格式,悬停在调用的函数上方会显示函数说明文档
二、变量的作用域
变量的作用域指变量的作用范围,即变量在哪些地方可用。在Python中,变量分为局部变量和全局变量
局部变量
局部变量即定义在函数内部的变量,其作用域为所在函数内部。
注意,即使函数内部和函数外部有两个同名变量,但是函数内部的改变不影响外面的变量
eg:函数外部有num = 10,函数内部有num = 200,此时的200只在函数内部有效,函数外部还是10
num = 10
def test():
num = 200
print(num)
def print1():
print(num)
test()
print1()
# 输出200 10
(而C语言不是这样)
#include<stdio.h>
int a = 0;
void test()
{
a = 100;
}
int main()
{
printf("%d\n", a);
test();
printf("%d", a);
}
//输出0 100
全局变量
全局变量即在函数内部、外部均生效的变量,一般定义在函数外部
global 关键字
使用 global关键字,可以在函数内部声明变量为全局变量,可用于创建全局变量或者在函数内部改变全局变量
eg:函数外部有num = 100,函数内部有num = 200,此时的200只在函数内部有效,当函数内部的num加了global后,两个num都变成200
注意:该关键字生效的前提时这个函数被调用,如果不被调用,则不生效,IDE会直接报错
num = 10
def test():
global num
num = 200
# 注意这里用global修饰num和num的赋值需要分开写
print(num)
def print1():
print(num)
test()
print1()
# 输出200 200
案例:模拟ATM
"""
以下是一段利用自定义函数和循环简单模拟的ATM程序,要点如下:
1、设计一个开始菜单,用于显示进行各项操作的选项,供用户选择
2、利用自定义函数分别实现存款、取款、查询和退出功能
3、在完成一个操作后,回到主菜单,进行下一次操作的选择
"""
money = 50000
# 定义初始余额
def welcome():
# 显示菜单
print(f"please enter a number to chose what you want to do.")
print("1.Deposit\t2.Withdraw money")
print("3.Query\t\t0.Exit")
# 1、存款 2、取款 3、查询 4、退出
# 一个制表符不能对齐,可以用两个
def deposit():
global money
# 将局部变量转换为全局变量
# 这里的全局变量声明要在使用这个变量之前
print(f"Now,you have {money} dollars.")
in1 = int(input("Enter a number:"))
print(f"There are {money + in1} dollars in your card.")
money += in1
def query():
print(f"Now,you have {money} dollars.")
def withdraw_money():
global money
print(f"Now,you have {money} dollars.")
out1 = int(input("Enter a number:"))
if out1 <= money:
# 判断余额是否充足
print(f"You will get {out1} dollars and there are {money - out1} dollars in your card.")
money -= out1
else:
print("Error")
name = input("Enter your name:")
# 输入用户姓名
print(f"Welcome {name}.")
welcome()
choose = int(input())
# 第一次选择
while choose:
# 直接用chose作为判断依据,当chose为0时,退出循环
if choose == 1:
deposit()
welcome()
choose = int(input())
# 在每一次操作后重新选择操作
elif choose == 2:
withdraw_money()
welcome()
choose = int(input())
elif choose == 3:
query()
welcome()
choose = int(input())
else:
print("Error")
welcome()
choose = int(input())
print("Exit")