0、创建一个列表,然后append自己。
a=[1,2,3]
a.append(a)
结果出现了省略号。查看图片 发现这个列表嵌套了无数层自己。
1、定义两个函数,互相调用对方。然后执行其中一个函数。
def a():
b()
def b():
a()
a()
结果发生了递归报错,而且报错信息很长。查看图片 “自己调用自己”的递归会省略报错信息,而“互相调用对方”的递归不会省略。
2、输入三个点,显示Ellipsis。
这就是省略号。
3、写一个程序:
import 递归模块
然后保存在Python的安装目录中,命名为递归模块。
然后就可以无限使用了:
4、定义一个函数,递归,再加上except RecursionError。
def f():
try:
print(1)
f()
except RecursionError:
print(2)
f()
然后运行这个函数。点击查看图片
达到最大递归层数后,仍然会继续递归下去:点击查看图片
然后按Ctrl+C中断:点击查看图片
最后打印出了大量的报错信息:点击查看图片
5、定义一个函数,将递归放到raise TypeError里。
def a():
raise TypeError(a())
然后运行这个函数。结果没有TypeError,反而有RecursionError。
6、Python有一个对象,它的类型是自己。那就是:type。
type is type(type) #返回True
isinstance(type,type) #返回True
至于 type 本身,它的类型还是 type,所以它连自己都没放过,把自己都变成自己的对象了。
7、定义一个函数,将递归放到raise TypeError里,不过是在递归20次后结束递归。
b=0
def a():
global b
b+=1
if not b>20:
raise TypeError(a())
结果只弹出来一个TypeError。
8、输入下面的代码(共计128个input):
input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input(input())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
结果在你输入内容之后,它会重复你输入的内容。然后你再输入内容,它又会重复。在执行128次后结束。
当然,代码不用输入那么长,直接用eval函数(将字符串内容当作代码执行),并用“字符串乘以整数”的方法得到那个很长的字符串。
eval('input('*128+')'*128)
9、导入types模块,里面有ModuleType。
import types
types.ModuleType
然后写types.ModuleType(‘datetime’),结果成功弄出来了一个datetime模块。
再写types.ModuleType(‘cat’),结果也成功了。但库里没有cat模块。
那么再试试用一下datetime的timedelta,结果提示没有这个内容。
原来,types.ModuleType(‘datetime’)这种写法,是创建了一个新模块,不是导入了模块。而且是“内置”(看图中的built-in),没有模块文件。
我们这样创建一个新模块,并赋值。
然后,在模块里创建一个变量,并赋值。
这样模块里就有内容了。
10、像上一条那样,创建一个模块,试试将模块名设置为非字符串类型:
结果报错。这时再正常用字符串模块名创建模块,然后修改一下__name__试试(__name__是模块名):
结果成功了。
最后:关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、精品Python学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、Python练习题
检查学习结果。
七、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。