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__':
向字典中添加一个键值对,即增加一个变量 。
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__':
在函数中定义变量:
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 。
- 最神秘的三座陵墓,一座不能挖,一座不敢挖,另一座挖不动
- 明明是一代传奇词人,偏偏无奈生在帝王家
- 一个开创出了盛世,同时也是历史上最大的败家子的帝王
- 宋仁宗:历史上最宽仁的皇帝之一却也难过美人关
- 一条杆棒等身齐:揭开太祖赵匡胤的武功有多高
- 乾隆皇帝一生最大的过错是什么?他为何这样做
- 三国十大家门不幸的美女:最后一个让人脊背发凉
- 【地图学】二、地图矢量化
- 【批量改文件夹中的图片名称-python】
- 60升电热水器功率一般多大