一 python自动化基础能力:3.python基础上之数据类型,函数( 九 )


a = 20s = locals()print(s)print(s['a'])
打印
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000024D0E2DCB88>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'Demo.py', '__cached__': None, 'a': 20, 's': {...}}20
向字典中添加一个键值对,即增加一个变量 。
a = 20s = locals()print(s)s['c'] = 200print(s)
打印
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000022917BECB88>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'Demo.py', '__cached__': None, 'a': 20, 's': {...}}{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000022917BECB88>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'Demo.py', '__cached__': None, 'a': 20, 's': {...}, 'c': 200}
在函数中定义变量:
def fn4():a = 10s = locals()print(s)fn4()
打印{'a': 10}
def fn4():a = 10s = locals()#可以通过操作s来操作函数的命名空间,但是不建议这么做!!s['b'] = 20print(s)fn4()
打印{'a': 10, 'b': 20}
9.递归函数
在函数中不是调用其他而是调用自身,这种调用方式,称为递归调用
9.1 递归基本概念和使用
练习:尝试求出10的阶乘10! 。
用循环:
result = 1for i in range(1,11):result *= iprint(result)
打印 。
要求:创建一个函数求任意数的阶乘:
def factorial(n):result = 1for i in range(1,n+1):result *= ireturn resultprint(factorial(10))
打印 。
递归:
即递归式函数;
递归简单说就是自己调用自己,递归式函数就是在函数中调用自己 。
递归时解决问题的一种方式,思想是将大的问题拆分成小的问题,直到不能再拆分 。
递归式函数的两个条件:
1.基线条件:
问题可以分解成最小的问题,当满足基线条件时,递归不再执行 。
2.递归条件:
将问题继续分解的条件 。
def recursion(n):#基线条件if n == 1:return 1#递归条件return n * recursion(n - 1)print(recursion(10))
打印
9.2 递归练习
def exponentiation(n,i):#n为底数,i为指数#基线条件,指数i为1if i == 1:return n#递归条件return n * exponentiation(n,i - 1)print(exponentiation(2,4))
打印16 。
当然,还有更简单的方法
def exponentiation(n,i):return n ** iprint(exponentiation(2,4))
即运用自带的幂运算符 。
回文字符串:即字符串从前往后看和从后往前看是一样的,如、abcba 。