Head First Python学习笔记1
# 递归
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的文件,
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程序,所以放一起也不错。
Head First Python学习笔记1的更多相关文章
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- Pythoner | 你像从前一样的Python学习笔记
Pythoner | 你像从前一样的Python学习笔记 Pythoner
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
随机推荐
- 解决 EntityFrameworkCore 执行 Add-Migration命令提示无法识别转义符的错误
版本.asp.net core 2.0 EntityFrameworkCore2,0,. 之前执行Add-Migration 命令 提示无法识别的转义序列,各种不成功, 解决办法,找到 项目里面的 ...
- 在ASP.NET MVC中使用区域来方便管理controller和view
在ASP.NET MVC中使用区域来方便管理controller和view 在mvc架构中,一般在controllers和views中写所有控制器和视图, 太多控制器时候,为了方便管理,想要将关于pe ...
- ASP.NET MVC Areas View 引用 外部母版视图
ASP.NET MVC Area => Areas View 引用 外部母版视图 创建项目:MVCSite.Area 创建mvc area 1.Areas View 引用 外部母版视图 1.1 ...
- JEECG(二) JEECG框架下调用webservice java springmvc maven 调用 webservice
JEECG系列教程二 如何在JEECG框架下使用webservice 本文所使用的webservice是c#开发的 其实无论是什么语言开发的webservice用法都一样 java springmvc ...
- React server rendering —— 网易美学主站同构实录
此文已由作者张硕授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 网易美学主站在最初开发时,因为各种历史原因,引入了例如JQuery,Bootstrop,Angular, Re ...
- windows下redis安装及应用
一.下载安装Redis(windows版本) 1.下载地址:https://github.com/MicrosoftArchive/redis/releases 2.安装: 1)打开运行窗口,输出cm ...
- js判断图片是否加载完毕
附件: https://www.jb51.net/article/102385.htm 问题: .offset().top和$(window).scrollTop()每次刷新页面后滚动的值有时候会不 ...
- 创建一个vue项目,vue-cli,webpack
,换成淘宝源: npm config set registry https://registry.npm.taobao.org/ 检查是否修改成功 npm config get registry ,安 ...
- 《JAVA与模式》之适配器模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...
- jq01--概述
jq:jQuery,是一个JavaScript函数库,为了简化js开发与编码而封装的js库,是一个“写得更少,做得更多”的js函数库,为事件处理而特别设计的.现在我们来学习一下它. 1.jq库:为事件 ...