Head First Python学习笔记1
1 2 3 4 5 6 7 8 9 | # 递归 def recursion(movies): for item in movies: # isinstance是一个判断类型的函数 if isinstance (item, list ): recursion(item) else : print (item) # |
正在学习python,记录一下,话说这本书好像不太适合没有编程基础的人啊,上来就讲列表和递归是闹哪样啊。
python是动态语言,即类型不用声明(想C#里那样List 、int什么的),比如列表要声明可以直接 movies = ["西游记之大圣归来","侏罗纪世界",1,["马达加斯加的企鹅"]],这里还嵌套了列表,所以接下来就是用递归遍历列表了。
学过c#的我认为上面那段代码还是好懂的,def是声明函数的关键字,括号里是参数,for..in..:类似c#里的foreach循环,然后用isinstance判断是否是列表,是则再次调用函数,这是典型的递归了。
再次吐槽:这真的是入门教程吗,不先介绍数据类型和一些基本关键字就直接开始解决问题(书里是为了解决问题:某人收藏了很多电影数据,要求管理一下),仔细想想,这样似乎也不错,就是完全没有编程基础的人可以要吃亏了。
然后把这段代码打包成模块发布(我怎么感觉有点跟不上了),模块有点像是c#里的dll。
先建立文件夹,把源码保存值文件夹内,然后新增一个setup.py的文件,
1 2 3 4 5 6 7 8 9 10 11 | from distutils.core import setup setup( name = '程序名称' , version = '1.0.0' , py_modules = [ '模块名称' ], author = '作者' , author_email = '邮箱@gmail.com' , url = '', description = 'a simple recursion' , ) |
然后在命令行里进入文件夹,运行:python setup.py sdist 就可以打包你的模块了,打包完成后:python setup.py install,安装。这个时候在进入IDLE用import(相当于C#里Using)关键字导入模块,再使用模块名调用函数就可以了。
先总结一下内容:
1.一些术语:BIF内置函数,组(Suite)代码块,python里通过缩进来区分代码分组
2.快捷键:在IDLE里Alt+P显示上一段代码,Alt+N显示下一个,Tab键可以完成代码,另外如果是从c#转来的一定要注意:按Tab显示出来的函数等代码不要用回车确定要用Tab(有时可能需要按两下Tab),我已经有很多次用回车结果python直接执行代码了
3.定义变量不用声明类型如:int a=1,可以直接a=1,python会识别类型。
4.print()函数会在屏幕上显示一个消息。由于python可以直接执行,所以理论上来说这会是我们用的最多的函数。
5.列表是一个数据集合,但是列表里可以存放任何数据类型,如上一篇里的data=["aaa",1,[True]],这应该算是动态语言和静态语言的区别了吧。另外列表可以自由伸缩,不用担心长度问题
6.for xx in xxx:循环,如果xxx是列表,那就相当于c#里的foreach,如果xxx换成range(0,3)(这里表示0<=xx<3python里大部分这样的截取都是包含左边,不包含右边)就是c#里的for循环了,还有别忘了冒号,定义函数,判断语句,循环等都需要冒号来确定和分行
7.def关键字定义函数,不需要定义返回值类型和参数类型,参数可以设置默认值,比如def add(a,b=0)你可以只传入一个参数,也可以传两个,但是要注意,如果有多个缺省参数而你只传一个,一定要指定参数名,如:def add(a,b=0,c="a")调用add(1,c="b")这种方式可以非常容易实现重载,不过我还是不建议在一个函数里重载,会增加复杂度
8.isinstance(data, int)用于判断数据类型
9.import关键字用于导入模块(python里的模块相当于c#里的类库)
写完发现这些其实是包含了一二章的内容,不过第二章主要介绍怎么打包python程序,所以放一起也不错。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)