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
函数中的局部变量和全局变量是两个互不相同,不影响的存在
定义函数的关键字,def
语法 : def 函数名(参数):
执行体
函数可以有参数也可以没有,同时参数还可以指定默认值
函数可以有返回值,也可以没有
# 定义函数 def max_value(m,n): """ 自定义实现比较两个指的大小""" if m>n : return m else: return n # 调用函数 mx_value = max_value(3,5) print(mx_value) # 5
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 """
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
前面的学习为后面的学习打基础,函数可以把功能之间实现隔离对后期的修改也是非常变量的。虽然再编写过程会遇到各种问题,但后期使用比较便利。为了减少不必要的代码冗余现象,尽量使用函数的方式进行封装这样看起来代码的比较扁平,也减少了嵌套带来程序可读性的下降。
学习的过程是可能需要付出很多心血, 但坚持是成为一个优秀数据分析师必然要经历的过程。
数据分析的学习之路, 并不是学的越多越好, 而是要将学习的方向明确好, 再使正确的力, 这样才可以在正确的方向 做正确的事。