Python 解释器 UTF-8
在交互模式下,…是次要提示符, >>>主要提示符
- / 除法运算
- //整除运算
- %求余数
- ** 乘方
- 复数 : 3+5 j (用J即可,大小写均可)
如果是多种混合运算(包含浮点数的情况下)最后都会成为浮点数
python 包括int float decimal fraction
3.1.2字符串
单引号和双引号在python意义一样
反斜杠\用于转义,有时候如果想要取消转义效果,要在一整个字符串的前面加一个r
也就是print(r"C:\some\name") 如果没有前置r,那么就会被理解为\n 这是换行符号
字符串跨行输入可以是
pring("""
hello world
你好
""")
输出
hello world
你好
------------------------------------------
pring("""\
hello world
你好
"""
输出(关键是那一个空行)
hello world
你好
字符串可以用+拼接,也可以用*重复 两个相邻的字符串会自动拼接如: “123””456“ =》“123456”
这点尤其是把很长的字符串拆开分别输入的时候尤其有用
text = ("hello"
"world" )
print(text)
hello world
但是这样的操作只能对字面量操作,如果是表达式或者变量就不可以了。只能用+号了
字符串是可以被索引访问的,第一个是0
word=“python”
word[0]=p
也可以用负数访问
word[-1]=n
切片 左边包括右边不包括 同时 [1:]表示从第二个字符到结尾
如果使用了过大的索引,会报错
但是如果只是使用了过大的切片,会被自动处理
python中的字符串是不可被修改的
内置的len()函数返回一个字符串的长度
列表
列表同样支持拼接,也支持 切片(每次切片返回一个新的列表) 而且内容可变
用append尾部增加
内置函数len也可以用上
3.2 走向编程的第一步
第一: python可以多重赋值
第二:缩进
第三:print()
\会转义->\
4.1 if
if 语句不要写括号,其他差不多
4.2 for
for i in range(1,5,2) 步长是2 从1开始,不包括5
4.3 range
4.4break continue else
4.5 pass
4.6 定义函数
4.7函数的定义形式
4.7.1参数默认值
def ask_ok(prompt,retries=4,reminder = ‘please try anain’)
几种填写参数的方式
ask_ok (4)
ask_ok(4,reminder=“2”)
ask_ok(4,5,“123”)
4.7.2 可变参数与keyword参数
def method(kind,*arguments,**keywords):
print("--Do you have any",kind,,"?")
print("-- I'm sorry we're all out of " kind)
for arg in arguments:
print(arg)
print("-"*40)
for kw in keywords:
print(kw,":",keywords[kw])
后续可以这样调用
cheeseshop("Limburger",
"It's very runny,sir",
"It's really very Very runny,sir",sh
opkeeper="Michael Palin",
client="John Cleese",
sketch="Cheese Shop Sketch")
4.7.3 可变参数后接参数
def method(*args, test)
methos (asd,asd,test=123)
4.7.4 解包参数列表
list(range(3,6))
args=[3,6]
list(rage(*args))
[3,4,5]
4.7.5 lambda 表达式
def make_increamentor(n):
return lambda x:x+n
5.1列表的更多特性
append
extend(一个iter) 用于拓展列表
insert(i,x)
remove(x)
删除第一个出现的,如果没有就报错
pop(i) 如果没有指定位置就删除最后一个
clear
index(x[,start[,end]])
搜索
count(x)计数
sort 参数可以用于自定义排序
reverse
copy
5.1.1列表作为一个栈使用
append()
pop()
5.1.2列表做队列使用
用collections.deque比较好
5.1.3 列表推导式
squares = [x**2 for x in range(10)]
反正看这种就是,x in range(10) 然后 对每一个x 进行x**2 然后装进列表
同时提到了一个zip函数, list(zip(*matrix))
[(1,5,9),(2,6,10),(3,7,11),(4,8,12)]
5.2del
a[1,2,3]
del a[0]
[2,3]
del a(就像是从内存上就释放了这玩意,再引用会报错)
5.3 元组和序列
元组的创建直接用()
元组是不可变更的
也可以
t=12345,554321,‘hello’
5.4集合
重复无序的一个,只能用set()创建,因为{}会创建一个字典
5.5 字典
也就是map
5.6 循环的技巧
在字典中 用item()便利字典
for k,v in knights.items():
在序列中循环时:用enumerate()函数可以将索引位置和其对应的值同时取出。
for i,v in enumerate(['tic','tac','toe'])
print(i,v)
# anthor way
for i in range(0,len(list))
当两个或者更多序列循环时,可以用zip()函数将其内元素一一匹配
questions=['name','quest']
answers=['lancelot','the holy grail']
for q,a in zip(questions,answers):
print("what is your {0}? It is {1}.".format(q,a))
what is your name? It is lancelot.
whar is your quest? It is the holy grail.
如果要逆向一个序列可以:
for i in reverse(range(1,10))
print(i)
想按照指定顺序可以使用sort函数
如果想循环时修改列表内容, 一般来说创建一个新列表比较好
6.1.1
from fibo import fib as fibonacci
7.1
输入输出 print input
7.2读写文件
f = open(“workfile”,‘w’)
r 是只能读取 w是只能写入 a 是追加 r+是读写 默认为r
如果是b 那就是binary mode
再用完之后要 file.close()
7.2.1 文件对象的方法
f.read()
f.readline()
f.write()
f.tell() 返回一个证书,给出文件对象在文件中的当前位置,表示二进制下从文件开始的字节数,以及文本模式下意义不明的数字
8 错误和异常
8.1 语法错误
在写代码过程中写错了代码
8.2 异常
例如ZeroDivisionError,NameError ,TypeError
在处理错误时,一般会用
try
except
else
finally这四个语句:
for i in (1,0):
try:
5/i
except ZeroDivisionError:
print("zeroDivisionError")
except TypeError:
print("typeError")
else:
print("other errro")
finally:
print("bye bye")
以上语句就会输出
you are right
bye bye
you are error
bye bye
class B(Exception):
pass
class C(B):
pass
class D(C):
pass
for cls in [B,C,D]:
try:
raise cls()
except D:
print("D")
except C:
print(“C”)
except B:
print("B")
B C D
理由是多态,B是父类,父类不能被赋值给子类
如果把except语句颠倒,就会输出BBB
理由是多态,B是父类,子类可以赋值给父类
BTW,在学习的过程中发现python允许多继承,
class A():
def method(self):
print("Method in class A")
class B():
#类似于静态变量
a=1
def method(self):
print("Method in class B")
@staticmethod
def static():
B.a+=1
print("a=",a)
class SuperClass(A,B):
pass
sc = SuperClass()
#这样子只有class A中的method,B的method没找到
sp.method()
sp.static()
B.static()
---
Method in class A
a=2
a=3
8.4抛出异常
raise(就类似于java中的throw)
8.5用户自定义异常
继承一下就好。。。。。。
8.6 finally语句
8.7 预定义的清理操作
with open ("myfile.txt") as f:
for line in f :
print(line,end = " ")
这个保证会关闭文件,用with语句的话