目录
函数
什么是函数?
函数:是一个被命名的、独立的、完成特定功能的代码段,其可能给调用它的程序一个返回值
通俗的说函数就是把一段可以实现某种功能的代码封装起来, 想要使用这个功能就可以直接调用函
数
被命名的:在Python中,大部分函数都是有名函数
完成特定功能的代码段:函数的功能要专一,专门为了完成某个功能而定义
返回值:当函数执行完毕后,其可能会返回一个值给函数的调用处
函数的主要作用:
① 模块化编程
② 代码重用
函数中的几个重要概念:
1.函数
2.参数
3.返回值
如果把函数比作一个机器, 那么参数就是源材料, 返回值就是最终产品, 同时根据参数的不同最终
产品也会有不同。
举例说明:
问: 1,2,3操作之后都会显示选择功能页面, 那么显示“选择功能”界面需要重复输出给用户,怎么实
现呢?
答: 使用函数把“选择功能”的相关代码封装起来, 当需要使用的时候直接调用函数, 这样就可以实现
代码的复用了
1、函数定义
定义格式:
def 函数名(参数):
函数体
...
return 返回值
函数的调用:
函数名(参数)
注意:
① 不同的需求,参数可有可无
② 函数必须先定义后使用
2、函数的说明文档
什么是函数的说明文档?
思考:定义一个函数后,程序员如何书写程序能够快速提示这个函数的作用?
答:注释
思考:如果代码多,我们是不是需要在很多代码中找到这个函数定义的位置才能看到注释?如果想
更方便的查看函数的作用怎么办?
答:函数的说明文档(函数的说明文档也叫函数的文档说明)。
作用: 说明文档是为了让函数的调用者.理解函数的作用和调用方式.方便调用者使用函数.
定义格式: 在函数内的第一行代码定义说明文档.
格式是 """说明"""
def sum2num(x,y):
"""这是求和函数.x是第一个值,y是第二个值"""
return x+y
3、函数的参数
函数的参数可以让函数使用更加灵活
思考:一个函数完成两个数1和2的加法运算,如何书写程序?
# 定义函数
def add_num1():
result = 1 + 2
print(result)
# 调用函数
add_num1()
思考:上述add_num1函数只能完成数字1和2的加法运算,如果想要这个函数变得更灵活,可以
计算任何用户指定的两个数字的和,如何书写程序?
分析:用户要在调用函数的时候指定具体数字,那么在定义函数的时候就需要接收用户指定的数
字函数调用时指定的数字和定义函数时候接收的数字即是函数的参数
# 定义函数时同时定义了接收用户数据的参数a和b,a和b是形参
def add_num2(a, b):
result = a + b
print(result)
# 调用函数时传入了真实的数据10 和 20,真实数据为实参
add_num2(10, 20)
带有参数的函数执行流程:
总结:
定义时小括号中的参数,用来接收参数用的,称为 “形参”
调用时小括号中的参数,用来传递给函数用的,称为 “实参”
那么来练一练吧~
要求:定义一个函数,完成前2个数完成加法运算,然后对第3个数,进行减法;然后调用这个函数。
注意:
使用def定义函数,要注意有3个参数。
调用的时候,这个函数定义时有几个参数,那么就需要传递几个参数。
4、函数的返回值
介绍
1.生活中的返回值:
我给儿子10块钱,让他给我买包烟. 这个例子中,10块钱是我给儿子的,就相当于调用函数时传递到参数,那么不管这个买烟的过程是什么样的, 最终的目标就是得到这包烟, 那么这包烟就是返回值。
2.开发中的返回值:
定义一个函数去计算数字计算, 那么不管数字的计算过程是什么样的, 最终这个函数的目的是把计算的结果返回给函数的调用者, 计算的结果就是返回值。
综上所述:
所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果。
返回值return
想要在函数中把结果返回给调用者,需要在函数中使用return
def add2num(a, b):
c = a+b
return c
保存函数的返回值
在“买烟”的例子中,最后儿子给你烟时,你一定是要从儿子手中接过来的. 程序也是如此,如果一个函数返回了一个数据,那么想要用这个数据,那么就需要保存
#定义函数
def add2num(a, b):
return a+b
#调用函数,顺便保存函数的返回值
result = add2num(100,98)
#因为result已经保存了add2num的返回值,所以接下来就可以使用了
print(result)
5、函数的变形
1、无参无返回值的函数
def print_hello():
print("hello")
#调用函数: 无参无返回值直接调用就行.
print_hello()
2、有参无返回值
def print_hello(count):
for i in range(count):
print("hello")
#调用函数: 有参的函数调用需要传递参数.
print_hello(5)
3、有参有返回值
def sum2num(x,y):
return x+y
#调用函数: 有参传递参数.有返回值要接收返回值.
result = sum2num(10,20)
result += 20 #接收返回值后可以继续使用.
print(result)
4、无参有返回值的函数
def get_name():
num = random.randint(1,10)
return "name"+ str(num)
#调用函数: 又返回值.需要接收返回值.
name = get_name()
print(name)
6、函数的嵌套
所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数
def testB():
print('---- testB start----')
print('这里是testB函数执行的代码...(省略)...')
print('---- testB end----')
def testA():
print('---- testA start----')
testB()
print('---- testA end----')
testA()
运行结果为:
执行过程:
如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置 。
7、变量的作用域
变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)
主要分为两类:局部变量和全局变量
作用范围划分: 1.局部变量: 只能在函数内部生效.函数运行结束后.局部位置的值都会消失. 定义在函数内 2.全局变量: 在该模块内的所有函数中都可以使用的变量.它会随着解释器的停止而消失. 定义在函数外 3.局部位置要想修改全局变量.需要使用global关键词声明之后才能修改.
1、局部变量
def testA():
a = 100
print(a)
testA() # 100
print(a) # 报错:name 'a' is not defined
变量a是定义在`testA`函数内部的变量,在函数外部访问则立即报错,
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
2、全局变量
所谓全局变量,指的是在函数体内、外都能生效的变量。
思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办?
答:将这个数据存储在一个全局变量里面
# 定义全局变量a
a = 100
def testA():
print(a) # 访问全局变量a,并打印变量a存储的数据
def testB():
print(a) # 访问全局变量a,并打印变量a存储的数据
testA() # 100
testB() # 100
3、global关键字
思考:`testB`函数需要修改变量a的值为200,如何修改程序?
a = 100
def testA():
print(a)
def testB():
a = 200
print(a)
testA() # 100
testB() # 200
print(f‘全局变量a = {a}‘) # 全局变量a = 100
`testB`函数内部的 a = 200 是定义了一个局部变量
使用 global关键字 可以在函数内部声明变量为全局变量, 如下所示:
a = 100
def testA():
print(a)
def testB():
# global 关键字声明a是全局变量
global a
a = 200
print(a)
testA() # 100
testB() # 200
print(f‘全局变量a = {a}‘) # 全局变量a = 200
总结:
一、局部变量: 就是在函数内部定义的变量
1、其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
2、因为其作用范围只是在自己的函数内部,所以不同的函数可以定义相同名字的局部变量(打个比方,把你、我是当做成函数,把局部变量理解为每个人手里的手机,你可有个iPhone8,我当然也可以有个iPhone8了, 互不相关)
3、局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储
二、全局变量: 如果一个变量,既能在一个函数中使用,也能在其他的函数 中使用,这样的变量就是全局变量, 这样的变量一般在函数外部定义。
1、在函数外边定义的变量叫做全局变量
2、全局变量能够在所有的函数中进行访问
8、多函数程序执行流程
一般在实际开发过程中,一个程序往往由多个函数组成,并且多个函数共享某些数据,如下所示:
1、共用全局变量:
# 1. 定义全局变量
glo_num = 0
def test1():
global glo_num # 修改全局变量
glo_num = 100
def test2():
# 调用test1函数中修改后的全局变量
print(glo_num)
# 2. 调用test1函数,执行函数内部代码:声明和修改全局变量
test1()
# 3. 调用test2函数,执行函数内部代码:打印
test2() # 100
2、把函数返回值作为参数传递
def test1():
return 50
def test2(num):
print(num)
# 1. 保存函数test1的返回值
result = test1()
# 2.将函数返回值所在变量作为参数传递到test2函数
test2(result) # 50
9、扩展:字符串的函数
字符串是python中最常见的容器类型. 里面存的是一个一个的字符.
我们有很多需求去使用字符串.以及对字符串进行各种操作.比如:查找.切割.替换.判断.
# "".startswith()是否以xx开头
# "".endswith() 是否以xx结尾
# "".isdigit()是否是纯数字的字符
# "".isalnum() # 判断是否是字母和数字
# "".isalpha() 判断是否纯字母
# "".join() 把字符串当做分隔符去分隔容器的元素.
# "".lower()转小写
# "".upper()转大写
# "".strip() # 默认去掉两端的空格
# "".startswith()是否以xx开头
# "".endswith() 是否以xx结尾
print("hello".startswith("h"))#True
print("hello".startswith("a"))#False
print("hello".endswith("l"))#False
print("hello".endswith("o"))#True
# "".isdigit()是否是纯数字的字符
print("12345".isdigit())#True
print("12345a".isdigit())#False
# 使用场景,可以判断一个字符串是否是纯数字的.
# num = input("录入一个数")
# if num.isdigit():
# print(int(num))
# else:
# print("请录入纯数字")
# "".isalnum() # 判断是否是字母和数字
print("123".isalnum())#True
print("123abc".isalnum())#True
print("abc".isalnum())#True
print("Abc".isalnum())#True
print("A$bc".isalnum())#False
# "".isalpha() 判断是否纯字母
print("abc".isalpha())#True
print("abc1123".isalpha())#False
# "".join() 把字符串当做分隔符去分隔容器的元素.
list1 = ["1","2","3","4"]
print("#".join(list1))# "1#2#3#4"
# "".lower()转小写
print("ABCdef".lower())# abcdef
# "".upper()转大写
print("ABCdef".upper())#ABCDEF
# "".strip() # 默认去掉两端的空格
s1 = " he llo "
s2 = s1.strip()
print(s1)
print(s2)
print("####hello####".strip("#"))#hello
标签:函数,Python,小白,能看懂,print,返回值,全局变量,def,定义
From: https://blog.csdn.net/weixin_52854743/article/details/139812755