python基础

来源:互联网 发布:绩效软件 编辑:程序博客网 时间:2024/06/08 05:00
Python字符串格式化:以一个%开头且后面跟着一个或多个格式字符的字符串是需要插入值的目标。
r:字符串最左边引号的前面加上r,表示所有字符应该按照原本的样子解释。
None:是Python的空值类型。
datetime模块:date、time、datetime。strftime用于将datetime格式化为字符串。strptime解析为datetime对象。
if elif else
and or 从左到右,短路型的。
pass是Python的空操作语句。用在任何没有功能的代码中。开发新功能时用pass做占位符。
异常处理:try/except/finally
异常类型组成的元组except(TypeError,ValueError):
range/xrange:用于产生一组间隔平均的整数。range(起始值,结束值,步长),注意所产生的值不包括结束值。
三元:value=true-expr if condition else false-expr。

Python的数据结构和序列:
元组tuple:一维的、定长的、不可变的Python对象序列。在圆括号里。
切片:通过切片标记,可以选取序列类型(数组、元组、NumPy数组等)的子集。基本形式由索引运算符[]以及传入其中的start:stop构成。start元素包括在内,stop元素不被包括在内。
seq[::2]是每隔一位取出一个元素,seq[::-1]是实现反序。
内置的序列函数:enumerate迭代时返回索引和value,sorted返回一个有序列表,zip用于配对,reversed按逆序迭代序列中的元素。

字典:又叫哈希映射。是大小可变的键值对集合。键和值都是Python对象,{键:值,键:值} in  del,pop(删除指定值将其返回)   update(一个字典合并到另一个字典中)
字典键必须是不可变的。列表的键是可变的。如果要将列表当做键,就要将列表转换为元组。
集合:由唯一元素组成的无序集。可以看成只有键没有值的字典。set([]),{}

序列的操作:s[len(S)-1]注意方括号中使用任意表达式,一个常量、变量、任意表达式。
Python中,数字、字符串、元组是不可变的,列表和字典完全可以自由的改变。这种不可变性可以保证在程序中保持一个对象固定不变。
字符串:序列的操作,不可变性,类型特定的方法:每一个字符串的操作都是真正的序列操作。find(),replace(),尽管这些方法有改变的含义,但这里不会改变原始的字符串,而会创建一个新的字符串作为结果---因为字符串具有不可变性。
编写字符串的方法:反斜线转义序列表示特殊的字符。"""表示所有行都合并在一起,并在每一行的末尾增加换行符。
Python也支持原始字符串常量,去掉反斜线转义机制(这样的字符串是以字母“r”开头的)。模式匹配(import re:包含搜索、分割、替换)

字符串是单个字符的字符串的序列,序列还包括列表和元组。

列表:类似数组,但强大的多。没有固定数据类型的约束,没有固定大小。
列表是任意类型的对象的位置相关的有序集合,没有固定大小,通过对偏移量赋值或调用其他方法,能修改列表的大小。
序列操作(索引、切片、拼接)、类型特定的操作、边界检查、嵌套、列表解析。

集合:set,唯一的,不可变的对象的无序集合。

变量、对象和引用:变量在赋值的时候才创建,它可以引用任何类型的对象,并且必须在引用之前赋值。共享引用(不同引用指向同一对象:a=b),a和b结果一样。和在原处修改复制a=b[:],a和b结果不同。
==测试两个对象的值是否相同,is比较实现引用的指针。

Python不允许在+表达式中字符串和数字混合。int("43"),str(43),ord("s")转换为对应得ASCII码。

函数:
def是可执行的代码,函数并不存在,直到Python运行了def后才存在。
创建了一个对象并将其赋值给某一变量名。
lambda创建一个对象但将其作为结果返回。
return将一个结果对象发送给调用者。
yield向调用者发回一个结果对象,但是记住它离开的地方。
global声明一个模块级的变量并被赋值。
nonlocal声明了将要赋值的一个封闭的函数变量。
函数是赋值(对象引用)传递的。
参数、返回值、变量并不是声明。

Python的多态:一个操作的意义取决于被操作对象的类型。
Python的作用域:命名空间。在代码中变量名被赋值的位置决定了这个变量名能被访问的的范围。
作用域法则:内嵌的模块是全局作用域;全局作用域的作用范围仅限于单个文件;全局指的是一个文件顶层的变量名仅对于这个文件内部的代码而言是全局的。
函数引用的变量会找转成的本地变量,print()会找全局变量。
nonlocal:是global的近亲,但它必须存在于嵌套函数的作用域中,只能出现在嵌套的def中。nonlocal意味着在嵌套函数中对X赋值,以修改嵌套函数的本地作用域中的X.
*args把其它位置的参数收集到一个新的元组对象中。
**args把其它关键字参数收集到一个字典中。

迭代和解析:
模块:模块可以由两个语句和一个重要的内置函数进行处理。
import:导入者以一个整体获取一个模块。
from:允许导入者从一个特定的模块文件中获取特定的变量名。
imp.reload
模块通过使用自包含的变量的包,命名空间提供了将部件组织为系统的简单的方法。
模块命名空间:变量名的封装。
文件生成命名空间:模块语句会在首次导入时执行,顶层的赋值语句会创建模块属性,模块的命名空间能通过属性_dict_获取,模块是一个独立的作用域。

包导入:
_init_.py包文件:使用包导入,必须遵循一条约束,包导入的路径中的每个目录内都必须有_init_.py文件,否则导入包会失败。dir0是容器,不需要此文件,且必须列在模块搜索路径上,也就是此目录必须是主目录,或列在PATHONPATH中。
包的初始化包首次读取时就会自动运行_init_.py文件,模块命名空间的初始化:在包导入的模型中,脚本内的目录路径,在导入后会变成真实的嵌套对象路径,_init_.py文件为目录所创建的模块对象提供了命名空间,from*语句的行为:_all_列表指的是当
目录包名称使用from*的时候,应该导入的子模块的名称清单。
如果用不着_init_.py文件,可以将其保持空白,不过为了让目录导入完全运作,这类文件就得存在。
如果需要读取两个或两个以上的路径内的同名属性,才需要使用import,在这种情况下不能使用from。

包相对导入:
3.0中不带点号的import总是略过相对部分,在sys.path所包含的绝对目录中查找。2.6先相对再绝对。前面的点号可以只用来仅对from语句强制相对导入,而不对import语句这样。
python3.0的相对导入的解决方案:
.用来表示包含文件的包目录,而导入就出现在该文件中,..表示将执行从当前包的父目录的相对导入。
相对导入的作用域:
相对导入适用于只在包内导入,相对导入只是用于from语句,术语含糊不清。
_all_:指出要复制的变量名,只对from*语句有效。_X:指出不被复制的变量名。
python加载文件时创建了_name_用法模式的变量并对其赋值,当顶层脚本执行这个文件时,名称会设置为_main_。

import和from语句的as扩展:避免变量名冲突。
用名称字符串导入模块:exec("import"+modname)
模块设计理念:总是在python的模块内编写代码,模块耦合要降到最低:全局变量,最大化模块的粘合性:统一目标,模块应少去修改其它模块的变量。

0 0
原创粉丝点击