python复习

缕一缕之前的python 3语法细节,很多常用的基本的就不写了~~

列表方法

  1. append
  2. count
  3. extend
  4. index
  5. insert
  6. pop
  7. remove (移除第一个匹配)
  8. reverse (改变原列表,不返回值)
  9. sort sorted 参数key

元组

不可变

tuple([1,2,3])   #(1,2,3)

字符串

ASCII转换

# Get the ASCII number of a character
number = ord(char)

# Get the character given by an ASCII number
char = chr(number)

格式化

格式化符号

说明

%c

转换成字符(ASCII 码值,或者长度为一的字符串)

%r

优先用repr()函数进行字符串转换

%s

优先用str()函数进行字符串转换

%d / %i

转成有符号十进制数

%u

转成无符号十进制数

%o

转成无符号八进制数

%x / %X

转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写)

%e / %E

转成科学计数法(e / E控制输出e / E)

%f / %F

转成浮点数(小数部分自然截断)

%g / %G

%e和%f / %E和%F 的简写

%%

输出% (格式化字符串里面包括百分号,那么必须使用%%)

补充说明
string = "Hello\tWill\n"

print("%s" %string)
print("%r" %string)

输出:
Hello Will

‘Hello\tWill\n’

这里的差异是str()和repr()两个内建函数之间的差异:

str()得到的字符串是面向用户的,具有较好的可读性
repr()得到的字符串是面向机器的
通常(不是所有)repr()得到的效果是:obj == eval(repr(obj))

字符串方法

  1. find
  2. join
  3. lower
  4. replace
  5. split
  6. strip(去掉两端空格)
  7. translate
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)

str = "this is string example....wow!!!"
print (str.translate(trantab))

#输出:th3s 3s str3ng 2x1mpl2....w4w!!!

字典

Python字典包含了以下内置函数:

len(dict)
计算字典元素个数,即键的总数。

dict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’}
len(dict)

str(dict)
输出字典,以可打印的字符串表示。

dict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’}
str(dict)
“{‘Name’: ‘Runoob’, ‘Class’: ‘First’, ‘Age’: 7}”

type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。

dict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’}
type(dict)

迭代器

迭代器有两个基本的方法:iter() 和 next()。

list=[1,2,3,4]
it=iter(list)
for x in it:
    print(x,end=' ')

用next:

import sys         # 引入 sys 模块

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象

while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

生成器

生成器是可以迭代的,但是你可以读取它一次,因为它并不把所有的值放在内存中,它是实时地生成数据:

mygenerator = (x*x for x in range(3))
for i in mygenerator:
    print(i)

1中括号变成了小括号
2不可以再计算第二次

装饰器

面向对象

继承、多态

init

slots

@property

Python内置的@property装饰器就是负责把一个方法变成属性调用的

class Student(object):

    @property
    def birth(self):
        return self._birth

    @birth.setter
    def birth(self, value):
        self._birth = value

    @property
    def age(self):
        return 2015 - self._birth

strrepr

str()返回用户看到的字符串,而repr()返回程序开发者看到的字符串,也就是说,repr()是为调试服务的。

class Student(object):
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return 'Student object (name=%s)' % self.name
    __repr__ = __str__

iter

如果一个类想被用于for … in循环,类似list或tuple那样,就必须实现一个iter()方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的next()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。

class Fib(object):
    def __init__(self):
        self.a, self.b = 0, 1 # 初始化两个计数器a,b

    def __iter__(self):
        return self # 实例本身就是迭代对象,故返回自己

    def __next__(self):
        self.a, self.b = self.b, self.a + self.b # 计算下一个值
        if self.a > 100000: # 退出循环的条件
            raise StopIteration();
        return self.a # 返回下一个值

getitem

表现得像list那样按照下标取出元素,需要实现getitem()方法:

class Fib(object):
    def __getitem__(self, n):
        a, b = 1, 1
        for x in range(n):
            a, b = b, a + b
        return a

文件读写

读文件:

f = open('/Users/michael/test.txt', 'r')
f.read()  #read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示
f.close()

可能会IOError

try:
    f = open('/path/to/file', 'r')
    print(f.read())
finally:
    if f:
        f.close()

上述方法过于繁琐:

with open('/path/to/file', 'r') as f:
    print(f.read())

read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:

for line in f.readlines():
    print(line.strip()) # 把末尾的'\n'删掉

要读取二进制文件,比如图片、视频等等,用’rb’模式打开文件即可。

处理非UTF-8编码的字符,采用encodeing;处理非法编码字符,errors

f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值