快速导航栏
一、函数基础知识点
函数格式:
1.函数定义的通用格式
def 函数名(形式参数):
"""
此处可以加函数的说明文档...
:param: 解释参数
:return: 解释返回值
"""
函数体
return 返回值
2.函数调用的通用格式
注意: 程序的入口是main
if __name__ == '__main__':
变量接收返回值 = 函数名(实际参数)
注意事项:
a、函数必须先定义再调用
b、函数不调用不执行
c、函数每调用1次就执行1次
d、函数的参数和返回值根据需求定是否含有
e、定义时有形参,调用时必须传入对应的实参
f、定义时有返回值,调用时建议用变量接收
g、定义时没有return 返回值,默认返回的None
h、当然定义时也可以手动返回None,此操作没有意义
全局变量和局部变量区别:
全局变量: 在函数内和函数外都可以访问的变量
局部变量: 只能在当前函数内访问的变量
注意: 如何在函数内真正的做到修改全局变量呢?
可以使用global关键字声明
举例:
global 变量名
函数是什么:
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
我们经知道Python提供了许多内建函数,比如print()。
当然也可以自己创建函数,这被叫做用户自定义函数。
二、入门操作示例
我们经常使用的print()就是一个python内置的函数
# 注意: print是有参数没有返回值的,不需要变量接收返回值
# 如果接收接收的是None
a = print()
print(a)
# 注意: input和len是有参数有返回值的,建议用变量接收返回值
# 方式1:接收后再使用
b = len('abcd')
print(b)
# 方式2:直接输出
print(len('abc'))
三、定义函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。
不带表达式的return相当于返回 None。
1、无参无返回值的函数
# 需求: 计算30和40的和
# 先定义函数
def get_sum():
a = 30
b = 40
sum = a + b
print(sum)
# 再调用函数
# 无参无返回值的弊端:
#只能计算固定的两个数的和,并且结果还不能用于其他操作
get_sum()
2、有参无返回值的函数
# 需求: 同时计算10和20以及30和40的和
# 先定义函数
def get_sum(a, b):
sum = a + b
print(sum)
# 再调用函数
# 有参数的好处是: 重复调用同一个函数,传入不同参数实现不同结果
get_sum(10, 20)
get_sum(30, 40)
3、有参有返回值的函数
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例
则是有返回值的:
# 需求: 同时计算10和20以及30和40的和
# 先定义函数
def get_sum(a, b):
sum = a + b
return sum
# 再调用函数
h1 = get_sum(10, 20)
print(h1)
h2 = get_sum(30, 40)
print(h2)
# 有返回值的好处是: 结果可以用于其他操作
# 需求: 10,20,30,40的和
print(h1 + h2)
4、None和对应类型
# 定义时没有return 返回值,默认返回的None
def show1():
print('测试代码1...')
a = show1() # 先调用show函数,然后把默认的None赋值给a
print(a) # None
print(type(a))
# 当然定义时也可以手动返回None,此操作没有意义
def show2():
print('测试代码2...')
return None
b = show2() # 先调用show函数,然后把默认的None赋值给a
print(b) # None
print(type(b))
5、函数说明文档
# 需求: 同时计算10和20以及30和40的和
# 先定义函数
def get_sum(a, b):
"""
这是一个求两个数和的函数
:param a: 是一个整数
:param b: 是一个整数
:return: 返回值是两个数的和
"""
sum = a + b
return sum
# 再调用函数
# 注意: 调用的时候,鼠标悬停到函数名上就会看到说明文档内容
h1 = get_sum(10, 20)
print(h1)
6、函数嵌套调用
# 先定义函数
def show2():
print('------show2开始-------')
print('此处省略1w行代码...')
print('------show2结束-------')
def show1():
print('------show1开始-------')
show2()
print('------show1结束-------')
def show():
print('------show开始-------')
show2()
print('------show结束-------')
# 再调用函数
# 程序的入口是main
if __name__ == '__main__':
# print(__name__)
show1()
四、全局变量与局部变量
1、变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。
两种最基本的变量作用域如下:
a、全局变量
b、局部变量
2、变量的使用
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
# 先定义函数
def show1():
# 局部变量只能在当前函数内部访问
a = 10
print(a)
print(b)
def show2():
# print(a) # NameError: name 'a' is not defined
print(b)
# main程序的入口
if __name__ == '__main__':
# 全局变量
b = 20
# 再调用函数
show1()
show2()
# 注意: 局部变量在函数外无法访问
# print(a) # NameError: name 'a' is not defined
# 注意: 全局变量在函数内外都能访问
print(b)
五、global关键字
先来解释下其英文含义,Global 中文含义:全球的,全面的。
在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量。此时用global语句就可以变成这个任务,也就是说没有用global语句的情况下,是不能修改全局变量的。
示例:
# 先定义函数
def show1():
# 修改全局变量
# 注意: 如果在函数内通过 变量名=新值 方式修改全局变量,其实是修改失败的
# 本质是在当前函数内创建了一个和全局变量名字一样的局部变量而已
# 如何在函数内真正的做到修改全局变量呢? 使用global关键字声明
global a
a = 300
print(a)
def show2():
print(a)
if __name__ == '__main__':
# 全局变量
a = 200
# 再调用函数
show1()
show2()
print(a)