python成长之路——第二天

cpython:c解释器  .pyc(字节码)——机器码

jpython :java解释器   java字节码

ironpython :C#解释器   C#字节码

。。。。

上面的:编译完之后是字节码

pypy:自己的解释器  自己的字节码   机器码  编译完直接是机器码  直接运行机器码  快 类似java

《python源码剖析》

编码:

#-*- coding: utf-8 -*-

8位:2**8=256——Unicode(万国码)至少16位——utf-8:Unicode的压缩(不同类型的位数不同)

utf-8:ascii:数字,字母,字符——8位

欧洲:2个字节

汉字:3个字节

单行注释:单引号

多行注释:双引号

python执行时会优先找字节码

python里有缓冲池,内存里会维护一段内存空间池用来缓存常用数据

数据类型:

|万恶的连接符(+):每次连接都会开辟一个新的内存空间(原内存空间程序不会删除,解释器有回收机制,发现没有人调用此内存空间即会回收)

eg:a=b+c+d 会开辟3个内存空间

|字符串格式化   :

python是有主文件的

对于python,一切事物都是对象,对象基于类(class)创建,相同类型的对象是由同一个类创建的,这些对象的功能是相同的,其功能集存放在创建这个对象的类里

s = "dd"

s = str(‘dd‘)

l1 = [1,2,3]

l1 = list("1,2,3")

都是先创建对象——再调用方法

(1)int:

__abs__      abs

__add__      +

__divmod__    产生商和余数  用于分页    __rdivmod__  加上r代表被除数和除数进行替换

__eq__

__ge__

__gt__

python里的源码包括:C写的源码和python写的源码 所以在看python源码时看到方法下面没写代码,写的是pass

(2)str:

type(对象名)  对象的类

dir(对象名)     对象的类和类的成员

__contains__   包含 等价于 in

>>> ("zhangyan").__contains__("yan")

True

>>> "yan" in "zhangyan"

True

capitalize      首字母小写转大写

>>> ("admin").capitalize()

‘Admin‘

casefold        所有字母大写转小写

center(num,填充字符串)   字符居中  num是长度

>>> ("admin").center(20,‘-‘)

‘-------admin--------‘

count(要统计字符,从第几个字符开始,到第几个字符结束)  统计字符出现次数

>>> ("asdfgfdertyeru").count("f",0,9)

2

encode(‘gbk‘)  编码成gbk

endswith(结尾字符,从第几个字符开始,到第几个字符结束) 判断是否以某字符串结尾

expandtabs()  把tab键(\t)转换为8个空格

find(字符) 查找字符   找不到返回-1

index(字符) 查找字符  找不到会报错

format  字符串拼接  同+ 同格式化字符串

>>> name="{0} like {1}"

>>> result=name.format("zhangjie","zhangyan")

>>> result

‘zhangjie like zhangyan‘

‘分隔符‘.join(要拼接的字符)  用来做拼接

partition(分割标志字符串)  分割字符串

replice(‘a‘,‘c‘) a全转换成c

rjust   右对齐

split    指定字符分割字符串

with  连接上下文

元组(tuple):

元组最后一个元素要加,

count

index

字典(dict)

dic1 = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}

dic1 = dict(k1=‘v1‘,k2=‘v2‘)

dic1.get(‘k1‘)   同dic1(‘k1‘)  不同的是如果key不存在 后者会报错,前者会返回null

格式符

格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:

%s    字符串 (采用str()的显示)

%r    字符串 (采用repr()的显示)

%c    单个字符

%b    二进制整数

%d    十进制整数

%i    十进制整数

%o    八进制整数

%x    十六进制整数

%e    指数 (基底写为e)

%E    指数 (基底写为E)

%f    浮点数

%F    浮点数,与上相同

%g    指数(e)或浮点数 (根据显示长度)

%G    指数(E)或浮点数 (根据显示长度)

%%    字符"%"

可以用如下的方式,对格式进行进一步的控制:

%[(name)][flags][width].[precision]typecode

(name)为命名

flags可以有+,-,‘ ‘或0。+表示右对齐。-表示左对齐。‘ ‘为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。

width表示显示宽度

precision表示小数点后精度

全局变量使用

总结:

  1. 内部函数,不修改全局变量可以访问全局变量
  2. 内部函数,修改同名全局变量,则python会认为它是一个局部变量
  3. 在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError

在程序中设置的sum属于全局变量,而在函数中没有sum的定义,根据python访问局部变量和全局变量的规则:当搜索一个变量的时候,python先从局部作用域开始搜索,如果在局部作用域没有找到那个变量,那样python就在全局变量中找这个变量,如果找不到抛出异常(NAMEERROR或者Unbound-LocalError,这取决于python版本。)

如果内部函数有引用外部函数的同名变量或者全局变量,并且对这个变量有修改.那么python会认为它是一个局部变量,又因为函数中没有sum的定义和赋值,所以报错。

遇到在程序中访问全局变量并且要修改全局变量的值的情况可以使用:global关键字,在函数中声明此变量是全局变量

eg:

if __name__ == ‘__main__‘:    bal=0                             #我的钱(自己定义)settle_accounts()
def settle_accounts():global balglobal moneyif bal > money:        bal-=moneyprint "恭喜您购买成功!您的消费为:%d 您的余额为:%d" % (money,balance)

字符串,元组,列表,字典之间的相互转换

#1、字典

dict = {‘name‘: ‘Zara‘, ‘age‘: 7, ‘class‘: ‘First‘}

#字典转为字符串,返回:<type ‘str‘> {‘age‘: 7, ‘name‘: ‘Zara‘, ‘class‘: ‘First‘}

print type(str(dict)), str(dict)

#字典可以转为元组,返回:(‘age‘, ‘name‘, ‘class‘)

print tuple(dict)

#字典可以转为元组,返回:(7, ‘Zara‘, ‘First‘)

print tuple(dict.values())

#字典转为列表,返回:[‘age‘, ‘name‘, ‘class‘]

print list(dict)

#字典转为列表

print dict.values

#2、元组

tup=(1, 2, 3, 4, 5)

#元组转为字符串,返回:(1, 2, 3, 4, 5)

print tup.__str__()

#元组转为列表,返回:[1, 2, 3, 4, 5]

print list(tup)

#元组不可以转为字典

#3、列表

nums=[1, 3, 5, 7, 8, 13, 20];

#列表转为字符串,返回:[1, 3, 5, 7, 8, 13, 20]

print str(nums)

#列表转为元组,返回:(1, 3, 5, 7, 8, 13, 20)

print tuple(nums)

#列表不可以转为字典

#4、字符串

#字符串转为元组,返回:(1, 2, 3)

print tuple(eval("(1,2,3)"))

#字符串转为列表,返回:[1, 2, 3]

print list(eval("(1,2,3)"))

#字符串转为字典,返回:<type ‘dict‘>

print type(eval("{‘name‘:‘ljq‘, ‘age‘:24}"))

open/文件操作

f=open(‘/tmp/hello‘,‘w‘)

#open(路径+文件名,读写模式)

#读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式

如:‘rb‘,‘wb‘,‘r+b‘等等

读写模式的类型有:

rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
w     以写方式打开,
a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )

注意:

1、使用‘W‘,文件若存在,首先要清空,然后(重新)创建,

2、使用‘a‘模式 ,把所有要写入文件的数据都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,将自动被创建。

f.read([size]) size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回""(空字串)

file.readline() 返回一行

file.readline([size]) 返回包含size行的列表,size 未指定则返回全部行

for line in f: print line #通过迭代器访问

f.write("hello\n") #如果要写入字符串以外的数据,先将他转换为字符串.

f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).

f.seek(偏移量,[起始位置])

用来移动文件指针

偏移量:单位:比特,可正可负

起始位置:0-文件头,默认值;1-当前位置;2-文件尾

f.close() 关闭文件

Code:

#!/usr/bin/env python
# Filename: using_file.py

poem=‘‘‘\Programming is funWhen the work is doneif you wanna make your work also fun: use Python!‘‘‘
f=file(‘poem.txt‘,‘w‘) # open for ‘w‘riting
f.write(poem) # write text to file
f.close() # close the file
f=file(‘poem.txt‘)

# if no mode is specified, ‘r‘ead mode is assumed by default
while True: 
line=f.readline() 
if len(line)==0: # Zero length indicates EOF 
break 
print line, 
# Notice comma to avoid automatic newline added by Python
f.close() 
# close the file

时间: 2024-08-02 15:13:42

python成长之路——第二天的相关文章

Python成长之路第二篇(1)_数据类型内置函数用法

数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> abs(x) 例如: #!/usr/bin/python print "abs(-45) : ", abs(-45) print "abs(100.12) : ", abs(100.12) print "abs(119L) : ", abs(119L)

Python成长之路第二篇(2)_列表元组内置函数用法

列表元组内置函数用法list 元组的用法和列表相似就不一一介绍了 1)def append(self, p_object):将值添加到列表的最后 # real signature unknown; restored from __doc__ """ L.append(object) -- append object to end """ pass (2)def count(self, value): 值的出现次数 # real signature

Python成长之路第二篇(3)_字典的置函数用法

字典的置函数用法(字典dict字典中的key不可以重复) class dict(object): """ dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d =

我的Python成长之路---第二天---Python基础(8)---2016年1月9日(晴)

数据类型之字典 一.字典简介 字典dict(dictionary),在其他语言中也成为map,使用键-值(key-value)的形式存储和展现,具有极快的查找速度. 字典的定义 d = {'key':value,...} 字典可以嵌套,value也可以使用列表等数据类型 字典通过键获取键所对应的值 d[key] 二.字典常用方法 1.clear(清除字典所有元素) 代码: 1 def clear(self): # real signature unknown; restored from __d

python成长之路第二篇(4)_collections系列

一.分别取出大于66的数字和小于66的数字 小练习:需求要求有一个列表列表中存着一组数字,要求将大于66的数字和小于66的数字分别取出来 aa = [11,22,33,44,55,66,77,88,99,90] dic = {} for i in aa :     ifi <= 66 :         if 'k1' in dic.keys():             dic['k1'].append(i)         else:             #创建只有一项元素的列表    

python成长之路第三篇(1)_初识函数

目录: 函数 1.为什么要使用函数 2.什么是函数 3.函数的返回值 4.文档化函数 5.函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多代码是重复利用的,这样会使我们的代码变得异常臃肿,比如说: 我们要写一个验证码的功能 例子: 比如说我们要进行一些操作,而这些操作需要填写验证码 验证码代码:  1 import random   2 number_check = ''   3 for i in range(0,

我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)

2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算是有一点基础.但在这里我要保持空杯心态,一切从头开始.好了不多说,Let's Python!!!! 一.Python简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言.目前Python已经成为实际上除了中国最流行的开发语

Python成长之路【第二篇】Python基础之数据类型

阅读目录 简介 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字(整形,长整形,浮点型,复数) 字符串 列表 元组 字典 集合 4 如何学习 #一:基本使用 1 用途 2 定义方式 3 常用操作+内置的方法 #二:该类型总结 1 存一个值or存多个值 只能存一个值 可以存多个值,值都可以是什么类型 2 有序or无序 3 可变or不可变 !!!可变:值变,id不变.可变==不可hash

python成长之路第三篇(4)_作用域,递归,模块,内置模块(os,ConfigParser,hashlib),with文件操作

打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.作用域 2.递归 3.模块介绍 4.内置模块-OS 5.内置模块-ConfigParser 6.内置模块-hashlib 7.with文件操作 代码执行环境默认为3.5.1 一.作用域 (1)什么是作用域,官方来说作用域就是就是有不同的命名空间,就像下面的代码一样,a=1它的作用域是全局的,也在全局的命名空间当中,当函数 action中的a=2它就在局部的作用域中,也在局部的命名空间当中. a = 1def