Python入门经典笔记

第一章:

Python是一种面向对象的脚本语言。Python是用可移植的ANSIC写成的,可以运行在各个平台。
动态类型:使用对象时,不需要复杂的类型和大小的声明。
内置的对象类型:提供常用的数据结构,列表(list),字典(dictionary),字符串(string)既有弹性有益于使用。
内置工具:处理这些对象,python提供功能强大的,标准的操作,包括合并(concatenation),片段(slice),排序(sort),映射(map)等等。
还有库软件,第三方软件,自动内存管理,大型程序的支持
Python程序可以通过C或C++写成的组件进行扩展,也可以嵌入到C/C++程序中。
Python上有一个可移植的SQL数据库API,可在不同数据库下运行。
dir()函数:不带参数时,返回当前范围内的变量,方法和定义的类型列表;带参数时,返回函数的属性,方法列表。日过参数包含方法
—dir—(),该方法被调用。如果参数不包含—dir—(),该方法将最大限度地收集参数信息。

第二章

1.程序是由模块组成的 2.模块中包含语句 3.语句生成并处理对象

  • 内置对象使简单程序写起来更容易
  • Python提供对象并支持扩展程序
  • 内置对象是扩展程序的组件
  • 内置对象总比定制的数据结构类型更加有效
    对象类型:Number(数字),String(字符串),List(列表),Dictionary(字典), Tuple(元组),File(文件)
    数字:
    Python支持常见的数字类型(整数,浮点型),常量和表达式。另外Python提供更高级的数字类型支持,包括复数类型,无限精确整数,大量的数字工具库。
    标准的数字类型:正常整数(C的长整数),长整数(无限大小),浮点数(C的双整数),八进制和十六进制常量,复数常量。
    字符串:
    在这里插入图片描述
    Python不允许你在 + 和 * 表达式中混合数字和字符串,’abc’+9会出错,而不是自动将9转化为字符串。
    如同在C语言中一样,Python的偏移从0开始,以比字符串长度小1的值结尾。
    字符串分片(slice) :S[1:]的到第一位外的所有内容。S[:-1]得到除最后一个字符之外的所有内容。S[1:3]从偏移1向上取到第三项,但不包括第三项。[:,0]取所有行的第一个元素
    [i:j]复制a[i]:a[j-1]已生成新的list对象。当i缺省默认为0 a=[0;j] 即 a = [;j]从第一个复制。当j缺省默认为len(alist),即a[2:] = a[2:10]。当都缺省时,a[:]完整复制。
    [i:j:s]s为步进,缺省为1 因此[i:j:1] = [i:j]。当s<0时,i缺省 默认为-1,j缺省 为 -len(a)-1 因此a[::-1]即为a[-1:-len(a)-1:-1] 相当于倒序

    在这里插入图片描述 Python提供了处理字符串的工具模块,string模块。包括转换大小写,查找字符串的子串,将字符串转化为数字形式等。
    String.upper(字符串)/lower 转换大小写。
    String.find(字符串,子串)返回子串的索引
    Sring.atoi(“42”)//python3已经删除 代替int(”32”),str("int”)

字符串变量:
‘Guido\’s’ 可以通过使用一个反斜杠是引号定义
事实上可以在字符串中转移任何特殊字符,python还可以合并临近的字符串常量。例如:a = “a”“is”“letter” ----输出:'aisletter’
r’a\b\c’ 仍保持反斜杠
在这里插入图片描述
Python 中的三种操作类别:
数字:支持加和乘等操作
序列:支持索引,分片,合并等操作
映射:支持键索引等操作
无论何时你把对象放到一个数据结构或变量名中,python存储的总是一个对象的引用,而不是对象的一份拷贝。
列表常用操作:
在这里插入图片描述在这里插入图片描述
字典:
无序的集合,字典中的项是通过键来存取,而不是通过偏移。
字典有时候又称:关联数组,或散列(hash)
列表是对象引用的数组,字典是无序的对象引用表。
在这里插入图片描述

table{}
for item in table.keys():
	print(item,/t’,table[item])

元组(tuple):
任意对象的有序集合,通过偏移存取,属于不可变序列类型,固定长度,异常,任意嵌套,对象引用的数组。
在这里插入图片描述
文件:
‘r’代表为输入打开文件,用以输入
‘w’代表为输出生成和打开文件
‘a’代表为在文件尾部追加内容而打开文件
在这里插入图片描述

  1. 列表,字典和元组可以包括任何种类的对象
  2. 列表,字典和元组可以任意嵌套
  3. 列表,字典可以动态扩大和缩小

共享的引用:任意一个改变共享列表对象也改变另外两个
== 操作符测试值是否相等
Python运行了一个相等测试,递归所有的内嵌对象is 操作符测试对象的一致性
Python测试它们是否真的是同一个对象(同一个地址)也可以< >来判断列表中嵌套的值大小的比较
Python还有特殊的对象:None 唯一特殊的数据结构。它通常起一个空的占位作用,类似于C语言的中的NULL指针。
在这里插入图片描述
内置类型的常见问题:
赋值生成引用,而不是拷贝,若想只改变原数据,不改变被引用的数据。通过拷贝 ,例如:L[:]#一份嵌入的L的拷贝
原理:分片的限定默认为0和被分开的片的长度。如果两个都被分开的话,分片在序列展开每一项。这样就生成一个顶部拷贝(一个新的,不共享的对象。)
不可变类型在原位不可以被改变:元组、字符串:解决的方法利用分片,合并生成新的一个新的对象。

第三章:

语句:
在这里插入图片描述在这里插入图片描述赋值:
赋值生成对象索引:python赋值在名字或数据结构中存储对象的引用(reference)。它总是生成对象的引用,而不是对象的拷贝。
名字第一次赋值即已生成:无需事先声明。
名字在引用前必须赋值:用一个没赋值的名字是一个错误。
隐式赋值:import,from,def,class,for,函数参数等等
在这里插入图片描述在这里插入图片描述
变量名字规则:
语法:下划线或字母 + 任意数量的字母,数字或下划线,必须是下划线或字母开头。
大小写敏感:SPAM与spam不同。
保留字的限制:不可以与Python中有特殊意义的词相同。
在这里插入图片描述
得将名字和对象明确区分开。对象有一个类型(整数,列表),可能是可变的或不可变的。名字则相反,只是对对象的引用,他们没有可变的概念,与他们所绑定的对象类型也没有相关的类型信息。

表达式:
可以用表达式作为语句。为了函数和方法的调用,在交互提示符下打印值。
在这里插入图片描述
在python中不允许我们在其他表达式中嵌入赋值语句(=)。理由是避免常见的编码错误。当你想使用== 不会因为错误的输入了=而意外的改变一个变量。

Print

作用就是打印对象。严格说,它把对象的文本表示写到标准的输出流中。打印在python很简单,虽然你可以通过调用sys.stdout文件对象的write方法达到同样的效果,但print语句在处理简单的打印工作是一件简单的工具。

import sys
sys.stdout.write(‘hello world\n’)

条件语句

If开始,然后是else/elif
在这里插入图片描述
上面的例子几乎等价于用条件语句。
在这里插入图片描述
语句定界符:
如果正在写完一个开放的句法,语句可以跨越多行:语句太长,一行放不下,允许在下一行输入语句。如果正在用()或者[]括起的成分。后续的行可以在任意嵌套层开头。
语句如果以反斜杠开头的话可以跨越多行:初始行加上反斜杠()以指示要在下一行继续。
很长的字符串常量可以任意跨越多行。
真值测试:
真代表着任意非空的数或非空的对象。
假代表着不真:数0,空的对象或者None
比较或判断相等返回1或者0(真或假)
and 和 or 布尔操作返回一个真或假的操作数对象
对于or测试,Python从左到右检测操作都有对象,返回的一个值为真的对象。发现第一个值为真的时候停止停止检测。通常称为短路检测。
在这里插入图片描述

While循环

在这里插入图片描述Break,continue,pass,else循环:
Break: 跳出最近的包围它的循环
Continue:跳至最近的包围它的循环顶部(到循环的首行)
Pass:什么都不做,只是一占位的空语句
判断y是否为一个素数:
在这里插入图片描述

For循环:
在这里插入图片描述在这里插入图片描述

第四章

一般形式:
在这里插入图片描述没有return语句的函数自动返回一个None对象。
函数中的作用域规则:默认时,函数内部赋值的名字与函数的名字空间关联。我们通常说函数定义了一个局部作用域,模块定义了一个全局作用域。
**模块是一个全局作用域:**每一个模块是一个全局作用域 — 一个名字空间,变量名在一个模块文件顶层生成(赋值)。
**对函数的每个调用是一个新的局部作用域:**每次你调用一个函数,生成一个新的局部作用域 – 是在函数的内部生成的名字所在的一个名字空间。
**赋值的名字是局部的,除非声明是全局:**默认情况,在函数中赋值的名字都放到局部作用域中。如果需要一个名字,而该名字又在包括该函数的模块顶层的话,你可以通过一个函数中用一个global语句声明是全局的。
**所有其他的名字都是全局的或内置的:**函数定义中每赋值的名字军被认为是全局的或内置的。
LGB规则:先局部(Local),次之全局(Global),次之内置(Built-in)
当在一个函数中赋值一个名字时,python总是在局部作用域中生成或改变他,除非在该函数已对它进行了全局声明。当在函数外部时,局部作用域与全局作用域一样 –都是一个模块的名字空间。
在这里插入图片描述在这里插入图片描述在这里插入图片描述Return可以返回任何种类的对象,通过在一个元祖中打包他们,它可以返回多个值。
参数匹配:从左到右,通过参数名匹配,可变参数,参数的指定值不被传递。
在这里插入图片描述
当关键词参数在调用时,参数列出的顺序无关紧要;
在调用中,关键字参数必须出现在所有非关键字参数后。
在一个函数首部中,*name必须在普通参数和默认值后,**name必须在最后。
Lambda表达式:
Lambda是一个表达式,不是一个语句。它返回一个值,它可以被赋给一个名字。
F = lambda x,y,z: x+y+z F(2,3,4) 9
在这里插入图片描述在这里插入图片描述
但一个函数无法准确的返回值是,函数就跳至尾部并退出。严格地说,所有函数都返回一个值,若你不能提供一个返回值,就会返回None。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
实际推荐这样做。
在这里插入图片描述
不想每次调用都列表增加,解决如下
在这里插入图片描述

第五章–模块

import : 允许客户按整体取得一个模块
from: 允许客户从一个模块中取得某些特定的名字
reload: 提供了一种无需停止Python就可以重载模块代码的方法。
模块和类实际上是修饰过的名字空间(namespace)。
生成的模块形式:Python文件,C扩展程序:很多Python的内置工具事实上都是导入的C扩展模块。
Python通过检查所有在PYTHONPATH环境变量中列出的目录,来查找可以导入的模块。
用Python的术语来说,模块就是名字空间———生成名字的地方。存在模块中的名字称为它的属性(attribute)。
在这里插入图片描述在这里插入图片描述
为了强迫一个模块代码重新载入,重运行,你需要通过调用reload内置函数明确地告诉Python这样做。
在这里插入图片描述
一般形式:
与import和from不同:
reload是Python中的一个内置函数,不是一个语句。
reload的参数是现有的模块对象,不只是一个名字。
(C的扩展模块也可以在运行的时候被动态载入,但它们不能被重载)
reload影响所有用import取得模块的客户。先前用from取得属性的客户不受reload影响。

模块编译模式:
Python系统通常被称作一个解释器。不过实际上介于传统解释器和编译器二者之间。与Java相同,Python程序被编译为一种称之为字节码的中间形式。
他在虚拟机上执行。 Python是解释性的,不过首先它仍将进过一个编译阶段。编译步骤是在Python中是自动的和隐藏的。
Python在模块第一次导入的时候自动把他们编译成字节码。而且,Python试图保存字节码到一个文件中,这样将来如果源文件没有改变的话可以避免重新编译。.pyc文件即是保存生成的模块字节码的。
当一个模块M导入,Python载入一个M.pyc的字节码文件代替相应的M.py源文件。
在这里插入图片描述
混合模式:__ name __ 和 __ main __:
既可以允许你导入一个模块,又可作为一个独立程序运行它。每个模块都有一个内置属性叫__ name __ ,Python中设定:

  1. 如果文件作为程序运行,在启动的时候,__ name 设定为字符串 main __
  2. 如果文件是被导入的,__ name __被设定为用户已知的模块名。

改变模块查找路径:
在这里插入图片描述
**包:**每个作为包使用的目录必须包括一个__init__.py以标识自己。

顶层代码语句的顺序问题:
在这里插入图片描述在这里插入图片描述

递归的from导入可能不工作
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值