本系列內(nèi)容來源于 廖雪峰的Python教程 點擊查看原文
入門零碎知識(主要回顧和Java不同的地方)
python3 打印
print("Hello Wolrd!")
句末不要分號
多字符打印
print("hello","world")
中間用 空格相加
運算
print() 里面可以直接進(jìn)行運算
讀取控制臺輸入
input() 讀取出來是個字符串
布爾值 True False 記得首字母要大寫
布爾值可以用and留储、or和not運算
python的除法
/ 這個是數(shù)學(xué)上的直接相除 得到的結(jié)果一定是浮點數(shù)
// 兩個斜杠 是整除
對于單個字符的編碼,Python提供了ord()函數(shù)獲取字符的整數(shù)表示琅绅,chr()函數(shù)把編碼轉(zhuǎn)換為對應(yīng)的字符:
Python對bytes類型的數(shù)據(jù)用帶b前綴的單引號或雙引號表示:
b'ABC'
python中的格式化
和c語言差不多
print('Hello, %s' % 'world')
print('%s%s'% ('你是','好人'))
輸出:'Hello, world'
你是好人
%d 整數(shù)
%f 浮點數(shù)
%s 字符串
%x 十六進(jìn)制整數(shù)
可以都使用%s
如何要輸入%時, 使用%%
Python中的列表(list),有序集合,可以隨時添加刪除元素
list = ['a','b','c']
len(list) = 3
list[0] 通過下標(biāo)進(jìn)行訪問
python支持倒敘訪問
list[-1] 取最后一個元素
list[-2] 取倒第二元素
列表支持內(nèi)嵌
>>> p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme']
其中 s[2] 又是一個列表
元組 tuple
有序列表,與list很相似,但是tuple一旦初始化就不能修改.
t = (1, 2)
tuple注意點:
t = (1)
這句話有歧義 ,會被當(dāng)括號處理
所有 元組中只有一個元素的時候,這樣定義
t = (1,)
>>> t = (1)
>>> t
1
>>> t=(1,)
>>> t
(1,)
else if 語句
可以簡寫為 elif
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
if語句還可以這樣寫
只要x是非零數(shù)值礼烈、非空字符串杀怠、非空list等,就判斷為True,否則為False布讹。
if x:
print("True")
dict 字典
查找速度極快,和java的的map差不多
d = {"1":"tom","2":"youxuan"}
set 無序载佳,不重復(fù)
新建要傳一個list列表
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
數(shù)據(jù)類型轉(zhuǎn)換
>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> str(100)
'100'
>>> bool(1)
True
>>> bool('')
False
函數(shù)引用
函數(shù)名其實就是指向一個函數(shù)對象的引用炒事,完全可以把函數(shù)名賦給一個變量,相當(dāng)于給這個函數(shù)起了一個“別名”:
>>> a = abs # 變量a指向abs函數(shù)
>>> a(-1) # 所以也可以通過a調(diào)用abs函數(shù)
1
空函數(shù)
def nop():
pass
if age >= 18:
pass
pass是占位符蔫慧,如何不加的話挠乳,程序會報錯
參數(shù)檢查 isinstance關(guān)鍵字
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
函數(shù)多個返回值
import math
def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
注:如果接收值是一個,返回值會自動轉(zhuǎn)換為一個tuple
函數(shù)的默認(rèn)參數(shù)
def power(x,n=2):
print(x,n)
注:默認(rèn)參數(shù)要在必選參數(shù)后姑躲。
默認(rèn)參數(shù)要牢記一點:默認(rèn)參數(shù)必須指向不變對象睡扬!
函數(shù)的可變參數(shù)
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum +n * n
return sum
調(diào)用:
calc(1,2,3)
calc(1,2,3,4,5)
可以傳入0個或任意個參數(shù)
如何有一個存在的tuple或者list:如nums = [1,2,3]
可以這樣調(diào)用calc(*num)
關(guān)鍵字參數(shù)
可以傳入0個或者多個參數(shù),會被自動封裝為一個dict
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
命名關(guān)鍵字函數(shù)
def person(name, age, *, city, job):
print(name, age, city, job)
和關(guān)鍵字參數(shù)**kw不同,命名關(guān)鍵字參數(shù)需要一個特殊分號
>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer
分隔符*黍析,*后面的參數(shù)被視為命名關(guān)鍵字參數(shù)卖怜。
如果函數(shù)定義中已經(jīng)有了一個可變參數(shù),后面跟著的命名關(guān)鍵字參數(shù)就不再需要一個特殊分隔符*了:
def person(name, age, *args, city, job):
print(name, age, args, city, job)
函數(shù)的參數(shù)組合
參數(shù)定義的順序必須是:必選參數(shù)阐枣、默認(rèn)參數(shù)马靠、可變參數(shù)、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
Python的高級特性
切片
相當(dāng)于Java中的截取
list tuple string 都支持切片
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
>>> L[0:3]
['Michael', 'Sarah', 'Tracy']
>>> L[:3]
['Michael', 'Sarah', 'Tracy']
第一個索引不填蔼两,默認(rèn)為0
>>> L[-2:]
['Bob', 'Jack']
>>> L[-2:-1]
['Bob']
可以從后面開始取 倒第一下標(biāo)為-1
前10個數(shù)甩鳄,每兩個取一個:
>>> L[:10:2]
[0, 2, 4, 6, 8]
所有數(shù),每5個取一個:
>>> L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
只寫[:]就可以原樣復(fù)制一個list:
>>> L[:]
[0, 1, 2, 3, ..., 99]
字符串'xxx'也可以看成是一種list额划,每個元素就是一個字符妙啃。因此,字符串也可以用切片操作俊戳,只是操作結(jié)果仍是字符串:
>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'