Python基础学习————函数
文章目录
1. 重新认识变量
- python解释器寻找变量的过程如下,遵循LEGB原则。
- Local(局部作用域) —> Embeded(嵌套作用域) —> Global(全局作用域)
—> Built-in(内置作用域) —>还没有找到会发生( NameError: name … not defined)错误
1.1 变量的类型
- 根据变量的作用域不同可以把变量分为全局变量和局部变量
- 以前我们定义的变量基本都是全局变量,程序实现的业务功能也比较单一
1.2 全局变量
- 定义全局变量的关键字,global
- 语法,global a ,表示定义一个全局变量a
- 一般不写在任意函数中的变量,也叫全局变量
1.3 局部变量
- 局部变量指放在函数里的变量,作用域只在这一个模块中
1.4 全局变量和局部变量同在一个程序分析
x = 100
def foo():
# 如果我不想在函数foo中定义局部变量x,想直接使用全局变量x,应该怎么做???
# global x
x = 200
def bar():
# 如果我不想在函数bar中定义局部变量x,想直接使用嵌套作用域中的x,应该怎么做???
nonlocal x
x = 300
print(x) # 300
bar()
print(x) # 300
foo()
print(x) # 100
- 对于全局变量和局部变量的定义需要根据变量的作用域进行具体分析
函数中的局部变量和全局变量是两个互不相同,不影响的存在
2. 函数
2.1 引入函数的背景
- 随着我们后面不断的学习,你可能以及发现了我们在编写代码时好多都是重复代码。这是你也许会选择直接粘贴或再敲一边也许当下可行,当如果我们要把同样的功能应用在不可场景上千遍,这是你不得不寻找方法来解决这种弊端。
2.2 函数的定义
-
定义函数的关键字,def
-
语法 : def 函数名(参数):
执行体
-
函数可以有参数也可以没有,同时参数还可以指定默认值
-
函数可以有返回值,也可以没有
2.3 函数的使用
- 函数的使用非常简单,只需要通过调用和传入对应的参数即可
# 定义函数
def max_value(m,n):
""" 自定义实现比较两个指的大小"""
if m>n :
return m
else:
return n
# 调用函数
mx_value = max_value(3,5)
print(mx_value) # 5
- 函数的功能就是把需要实现的功能进行封装,可以进行无限制的调用
3. 函数的应用案例
3.1 生成随机验证码
import string
import random
def captcha(length):
"""
实现生成随机指定长度验证码
:param length: 验证码长度
:return: 返回指定长度验证
"""
st = string.ascii_letters + string.digits
return ''.join(random.choices(st, k=length))
def display(num,length):
for _ in range(num):
print(captcha(length))
# 调用
display(10,4)
"""
运行结果如下:
AK1P
KdnB
r0L2
rGQs
11V9
wxHt
cL7n
8kZp
FlTb
mRw3
"""
3.2 计算样本数据的极差
def peak_to_peak(l):
""" 通过传入一个列表计算样本的极差"""
min_num = min(l) # 获取最小值
max_num = max(l) # 获取最大值
distant = max_num - min_num
return distant
print(peak_to_peak([1, 3, 56, 2, 86, 3])) # 85
简单总结
前面的学习为后面的学习打基础,函数可以把功能之间实现隔离对后期的修改也是非常变量的。虽然再编写过程会遇到各种问题,但后期使用比较便利。为了减少不必要的代码冗余现象,尽量使用函数的方式进行封装这样看起来代码的比较扁平,也减少了嵌套带来程序可读性的下降。
语录
学习的过程是可能需要付出很多心血, 但坚持是成为一个优秀数据分析师必然要经历的过程。
数据分析的学习之路, 并不是学的越多越好, 而是要将学习的方向明确好, 再使正确的力, 这样才可以在正确的方向 做正确的事。