python笔记

raw_input():在程序最后加上这个就会使程序停留,否则会一闪而过,因为raw_input读取标准输入的下一行,如果还没有得到的话一直等待输入,

但如果脚本出现了错误,错误信息会写在弹出的终端窗口上,但这个窗口会马上消失,即使加了raw_input

用IDLE保存文件时要加上后缀.py才行,否则打不开

每一个以扩展名.py结尾的python源代码文件都是一个模块,其他的文件可以通过导入一个模块读取这个模块的内容,导入从本质上来讲,就是载入另一个文件,并能够读取那个文件的内容,一个模块通过这样的属性能够被外部使用
这种基于模块的方式使模块成了python程序架构的一个核心概念,更大的程序往往以多个模块文件的形式出现,并且导入了其他模块文件的工具,其中的一个模块文件被设计成主文件,就是那个启动后能够运行整个程序的文件

源文件在windows中外观为白色背景的图标,字节码有黑色底色,一般运行源代码文件,即只能点开就是个DOS窗口

import xx,这是模块导入,但是注意::这里的xx必须与主文件在同一文件夹!!!

a = [1,2, 3],这个时候可以改变元素的值
a = (1, 2, 3),这个时候不可以改变元素值,因为这是元组,不能改变

python里没有花括号
没有++,--,都是用+=和-= 代替

if a == 1:
print'hello'
elif a ==2: 必须像这样缩进,否则直接说语法错误,elif和else必须不能空格,只能在最里面
print 'world'
else:
print'bye'

while a < 10:
print a,
a += 1 #这样就会把1到9的9个数字在一行里显示,如果a后面没有逗号,则会默认显示成竖的
+=也是赋值运算符,也没有返回值

python shell窗口是IDLE的主窗口,一开始就会被打开,并运行交互会话,在这里编写你输入的代码并能够在输入后马上运行,并且可以作为测试工具进行使用

Run Module后,结果会在主交互窗口即python shell生成,窗口中的最后三行就是在另外打开的独立编辑窗口的脚本的执行结果
RESTART信息告诉我们用户脚本的进程重新启动以运行编辑的脚本,并为独立的脚本输出做好准备

分片:一般形式为X[I:J],表示"取出在X中从起始为I,直到但不包括J的内容",结果就是返回一个新对象.如: s = 'spam', s[1:3]结果是'pa'
也支持负偏移,如:s[:-1],-1就是最后一个字符
X[I:J:K]:表示索引X对象中的元素,从偏移为I直到偏移为J-I,每隔K个元素索引一次,第三个限制,K,默认为1,这就是在一个切片中从左至右提取每一个元素的原因
如果上式中的K为负数,如-1,则两个边界的意义实际上进行了反转,即反序输出

序列指字符串,列表和元组
序列可以用+,-,*计算,就是合并,去除,复制类似的做法,*后面必须加一个数字,表示复制成原来的多少倍,执行这些操作后序列不会被改变,即是静态的

在PY中每一个对象都可以分为不可变性或者可变性,在核心类型中,数字,字符串和元组是不可变的,即在其创建后值不能改变,列表和字典不是这样,它们可以完全自由地改变
不能通过对字符串某一位置进行赋值而改变字符串,但是可以通过建立一个新的字符串并以同一个变量名对其进行赋值,因为PY在运行过程中会清理旧的对象,比如:s = 'spam', s = 'z' + s[1:],s就会变成zpam,这相当于用了字符串的加法,并且赋了值

字符串的find方法是一个基本的子字符串查找的操作,它将返回一个传入子字符串的偏移量(子字符串第一个字符的位置),或者没有找到的情况下返回-1,
而字符串的replace方法将会对全局进行搜索和替换,但这都不会改变原始的字符串,而是会创建一个新的字符串作为结果

py允许字符串包括在单绰号或双引号中,它们代表相同的东西,也能够在三个引号中表示多行字符串的形式,当采用这种形式的时候,所有的行都合并在一起,并在每一行的末尾增加了换行符

PY的列表对象的操作跟字符串的通用操作一样,同样,也不会改变原始值
列表与其他语言中的数组有些类似,但是列表要强大得多,其中一个方面就是,列表没有固定类型的约束
但是因为列表是可变的,大多数列表的方法都会改变列表对象,而不是创建一个新的列表,
append方法扩充了列表的大小并在列表的尾部插入一项;pop方法移除给定偏移的一项,从而让列表减小;其他的列表方法可以在任意位置插入(insert)元素,按照值移除(remove)元素等
sort()默认按照升序对列表进行排序,而reverse对列表进行了翻转
边界检查:尽管列表没有固定的大小,PY仍不允许引用不存在的元素,如:p = [123, 'sp', 'ni']则如写了p[99]就会直接报错

PY的数据类型可以嵌套,能够以任意的组合对其进行嵌套,并可以多深层次的嵌套都可以
PY中的多维数组和C++里的多维数组我特性一样

列表解析表达式:可用于处理矩阵,列表解析源自集合的概念,它是一种通过在一个序列中运行一个表达式而创建的一个新列表,每次一个,从左至右,比如把矩阵M中的每个row中的row[1],放在一个新的列表中,其结果就是一个新的列表包含了矩阵的第二列

字典:编写在大特号里,并包含了一系列的"键:值"对,如:D={'food':'spam', 'quantity':4, 'color':'pink'}
字典的索引操作使用的是和序列相同的语法,但是在方括号中的元素是键,而不是相对位置,如:D['food'],输出结果是'spam'
字典可以嵌套,如:rec ={'name':{'first':'bob', 'last':'smith'}, 'job':['dev', 'mgr'], 'age':40.5},则rec['name']结果是{'last':'smith', 'first':'bob'},而rec['name']['last']的结果是'smith'

键的排序:for循环,如: d={'a':1, 'b':2, 'c':3}, for key in sorted(d) : print key, '=>', d[key],结果是a=>1 b=>2 c=>3
不存在的键:if测试,字典也不可以获取一个不存在的键值,这个可以用if和has_key测试有没有,如:if not d.has_key('f'): print 'missing'

无组:基本就是一个不可以改变的列表,元组也是序列,但具有不可变性

文件:创建一个输出文件,可以传递其文件名以及'W'处理模式字符串去写数据:f= open('data.txt', 'w'),也可以用write,read函数进行读写

变量: 变量在它第一次赋值时创建;变量在表达式中使用将被替换为它们的值;变量在表达式中使用以前必须已赋值域变量像对象一样不需要在一开始进行声明,换句话说,赋值会让变量自动生成

X//Y :floor除法,这个操作不考虑操作对象的类型,总会省略掉结果的小数部分,剩下最小的能整除的整数部分,即商的整数部分,

位操作:对二进制位的操作
x = 1 x << 2,结果为4,这是指二进制数1左移了两位,成为二进制数4
还有二进制或(0001 | 0010 = 0011), 二进制与(0001 & 0001 = 0001)

复数表示为两个浮点数(实部和虚部)并接在虚部增加了J或j的后缀

八进制常量以O开头,并紧跟着八进制数字0-7的字符串,每一个八进制数字都可由3个二进制位来表示
十六进制常量以Ox或OX开头,并跟着由十六进制数字0-9和大写或小写的A-F构成的字符串,每个十六进制数字能够由4个二进制位来表示

使用数字工具如math, sin, sqrt之类的时,要导入math模块
使用标准库中的random模块时必须导入,这个模块提供了选出一个在0和1之间的任意浮点数,选择在两个数字之间的任意整数,在一个序列中任意挑选一项等功能

创建一个集合对象,将一个序列或其他的迭代对象传递给内置set函数,得到了一个集合对象,其中包含传递的对象的所有元素,注意集合并不包含位置顺序,序列却包含,
如: x = set('abcde'),再输入x,则结果是set(['a', 'c', 'b', 'e', 'd']) ; 'e' in x的结果是True
集合通过表达式操作符支持一般的数学集合运算,不能在一般序列上应用这些操作,必须通过序列创建集合才能使用这些工具

变量:是一个系统表的元素,拥有指向对象的连接的空间,
对象:是被分配的一块内存,有足够的空间去表现它们所代表的值
引用:是自动形成的从变量到对象的指针

类型属于对象,而不是变量
变量名没有类型,因此一个变量名可以多次赋值为多种类型,如数字,字符串等.由于变量名只是引用对象而已,这种代码自然行得通
从另一方面讲,对象知道自己的类型,每个对象都包含了一个头部信息,其中标记了这个对象的类型.
每当一个变量名被赋与了一个新的对象,之前的那个对象占用的空间就会被回收(如果它没有被其他的变量名或对象所引用的话),这种自动回收对象空间的技术称作垃圾收集
共享引用:a=3 b =a:在运行赋值语句b=a后,创建变量b,使用的是变量a,并且它在这里没有被赋值,所以a被替换成其引用的对象3,从而b也成为这个对象的一个引用,实际效果就是变量a和b都引用了相同的对象,即指向了相同的内存空间,这就是共享引用,即多个变量名引用了同一个对象
如果在b=a之后又对a赋值为别的,则a会改变,但是b仍然引用原始的对象3,因为这个赋值运算改变的不是对象3,仅仅改变了变量a

空字符不会像C语言那样去中断一个字符串,相反,PY在内存中保持了整个字符串的长度和文本,事实上,PY没有字符会中断一个字符串
两个反斜线是一个反斜线的转义序列,能够通过简单地写两个反斜线去保留反斜线

可以在脚本中通过在开头的引号前增加字母U(大写或小写)编写一个Unicode字符串,如:u'spam'
PY允许表达式中自由地混合Unicode字符串和一般的字符串,并作为混合类型的结果将结果转为Unicode

PY中不能够让数字和字符串相加,甚至即使字符串看起来像数字(如全是数字的字符串)也不可以,
但可以使用转换工具预先处理,把字符串当作数字,或者把数字当作字符串,如:int('45')将字符串转换成数字,str(42)和repr(42)将数字转换为字符串表达形式,str和repr的区别在于前者得到一种对用户更加友好的格式,如小数点更少...
str也可把浮点数等转换成字符串,float可以把字符串转换成浮点数
ord函数可以将单个的字符转换为对应的ASCII码,如:ord('s')会输出115,而chr函数将会执行相反的操作

字符串格式化:支持像C语言一样的%d之类的,%提供了简单的方法对字符串的值进行格式化: 如:'%d %s %d you' % (1, 'spam', 4)输出结果是'1 spam 4 you'
1.在%操作符的左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都以%开头(如%d)
2.在%操作符右侧放置一个对象(或多个,但此时得放在括号内),这些对象将会插入到左侧想让PY进行格式化字符串的(或多个)转换目标的位置上去
%-6d是进行6位的左对齐格式化,%6d是进行6位补零的格式化,即右对齐

列表:排序默认大写字母排在所有小写字母之前,而所有整数都排在字符串前,因为更小,PY3.0之后可能不行,
列表中,reverse可原地的反转列表,extend和pop方法分别能够在末端插入多个元素和删除一个元素(默认删除最后一个元素,根据栈的特点,可以在pop后面的括号写上数字,表示删除的是第几个元素)

字典没有顺序,字典内键由左至右的次序几乎总是和原先输入的顺序不同
字典的update方法有点类似于合并,它把一个字典的键和值合并到另一个,盲目地覆盖相同键的值
字典的pop方法能够从字典中删除一个键并返回它的值,这类似于列表的pop方法,只不过删除的是一个键而不是一个可选的位置
print后面的是键,输出的是值
键并不一定总是字符串,任何不可变对象(即不可能是列表)都可以,例如可以用整数作为键
序列运算对字典无效
对新索引赋值会添加项.当编写字典常量时,或者向现有字典对象的新键赋值时,都会生成键,最终结果是一样的
d={} d[99] = 'spam' 这样就建立了一个字典:d={99:'spam'},当然99这个也可以是字符串
字典可以取代搜索数据结构,因为用键进行索引是一种搜索操作

元组: x=(40)结果是数字40 ,而y=(40,)表示一个包括了整数40的元组,区别在于多了一个逗号

打开文件:为打开一个文件,程序会先调用内置open函数,首先是外部文件名,接着是处理模式,处理模式典型地用字符串'r'代表为了输入打开文件,'w'代表为了输出生成并打开文件,'a'代表为在文件尾部追加内容而打开文件,通常'r'是默认值,即如果没有指明哪种模式,就会用'r'
在模式字符串末尾加上b可以进行二进制数据处理(行末转换就会被关闭了),而加上'+'意味着同时为输入和输出打开文件(也就是说,我们可以对相同对象进行读写)
要打开的两个参数必须都是PY的字符串,第三个是可选参数,它能够用来控制输出缓存,传入"0"意味着输出无缓存(在写入方法调用时立即传给外部文件),
外部文件名参量可能包含平台特定的以及绝对或相对目录路径前缀,没有目录路径时,文件假定存在当前的工作目录中,也就是脚本运行的地方

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

赋值操作储存对象的引用,而不是这些对象的拷贝
x=[1,2,3] l=['a',x,'b']如果修改x的元素,则l也会改变
如果不想改变,则可以: 没有限制条件的分片表达式(l[:])能够复制序列,字典copy方法(d.copy())能够复制字典, 有些内置函数(如:list)能够生成拷贝(list(l)). copy标准库模块能够生成完整拷贝

不能在实地改变不可变对象,如果需要的话,你得通过分片,合并等操作来创建一个新的对象,再向后赋值给原引用

"=="操作符测试值的相等性,PY运行相等测试,递归地比较所有内嵌对象
"is"表达式测试对象的一致性,PY测试二者是否是同一个对象,也就是说,是否在同一个内存地址中,通常是不同的,但是如果是短字符,会在PY内部暂时储存并重复使用短字符串作为最佳化,事实上内存里只有一个字符串供两个分享,因此会返回true
s1='spam' s2='spam' s1==s1, s1 is s2 结果输出是(True, True)
PY中真和假的含义:数字如果非零,则为真,其他对象如果非空,则为真

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值