python 基礎(chǔ)知識
說明:
- 當(dāng)前版本:
3.7.0 - 所有示例都是寫在文件中
.py - 參考教程:Python教程
- 執(zhí)行文件
python index.py - 所有的代碼都在同一個文件
index.py中,各部分引用變量一致。
起步
-
輸出一個
hello world;print("hello world")注意:在
.py文件中代碼是不能隨意縮進的,不然執(zhí)行報錯 -
用戶輸入;
name = input("please input your name \n"); print("welcome",name)執(zhí)行文件后,等待用戶輸入,按
enter結(jié)束輸入,打印welcome XXX.
注意:- 用戶輸入的值類型是字符串
-
if...else語句# if block if name=="admin": print("歡迎管理員登陸!") else: print("登陸成功!")** 說明**:
-
if...else語句以:結(jié)束,語句塊縮進表示; -
#表示注釋,描寫代碼塊的功能。
注意:由于使用的控制終端不同,導(dǎo)致打印中文報錯??稍O(shè)置其他終端或者設(shè)置文件編碼
定義文件編碼 -
-
數(shù)據(jù)類型
整數(shù)、浮點數(shù)、字符串、布爾值、空值# '\' 轉(zhuǎn)義 print("hello \n world") # '\t' 制表符 '\n' 換行 ‘r'XXX'’ 定義內(nèi)容部不專一 print(r"hello \n world"); # ‘'''xxx'''’ 格式化文本換行 print('''hello world''') # 布爾運算符 and or not print(8>5 and 8<10)說明:
- 浮點數(shù)科學(xué)計數(shù)法表示:
2e10 - 布爾值大寫的
True/False; - 變量命名是大小寫敏感的,如:
name/Name不同。 - 空值表示為
none; - 變量定義遵循基本的規(guī)則:英文、數(shù)字、下劃線,不能以數(shù)字開頭。
- 常量定義不能改變的變量,用大寫表示。
- 浮點數(shù)科學(xué)計數(shù)法表示:
-
字符串
# ord 對單個字符編碼 chr 對單個字符的解碼 Name = ord('國') print(Name) # "國" 22269 Name_ = chr(Name) print(Name_) # b'xx' 表示字節(jié)碼 # "中國" b'\xe4\xb8\xad\xe5\x9b\xbd' print("中國".encode("utf-8")) # len 計算字符長度 print(len("hello world")) # 文本格式化 print("%d周年" % 70) # format() 格式化方法 print("{0}周年".format(70))說明:
-
encode()編碼;decode()進行解碼; - 指定編碼類型,如果超出編碼范圍,就會報錯;中文超出
ASCII; -
%s字符串;%d整數(shù);%f浮點數(shù);%x十六進制數(shù);%%轉(zhuǎn)義輸出% -
format()格式化方法;
-
-
數(shù)據(jù)結(jié)構(gòu)
list# list names = ["花花","小亮","明總"] print(names[0]) # udpate names[0] = 70; # tuple 元組 names_ = (1949,2019,70) print(names_[2])說明
-
append()往后添加一個元素;insert(index,name)插入元素到指定位置;pop()刪除末尾元素; - 元組具有不可變性,即其中的元素一經(jīng)初始化是不能改變的;
- 元組中元素指向的是一個對象,那對象屬性的改變是沒有關(guān)系的。
- 元組定義一個元素是
(12)會存在算數(shù)歧義,為了區(qū)分如此聲明(12,)
-
-
循環(huán)
# for ... in 循環(huán) for item in names: print(item) # while 循環(huán) num = 3 while num>1: print(num*2) num = num-1說明:
range(11)生成0-10的整數(shù)序列;
break跳出循環(huán);
continue跳過本次循環(huán); -
使用
dict字典。
類似對象、以鍵值對存儲數(shù)據(jù);# dict user = {"袁明":23,"魯花":32,"祖國":70} print(user["祖國"]) # keys() / values() / items() for key in user.keys(): print(key,user[key]) # set 只存儲值,不重復(fù) age = set([23,32,70,32]) print(age)
說明:
-
... in ...判斷key值是否存在于字典中; -
get()獲取值,不存在返回none,接受第二個參數(shù)作為不存在時的返回值; -
pop()刪除一個鍵值對; -
add()向set中添加一個值;remove()則移除一個值; -
values()返回字典值集合;keys()返回鍵值集合;items()按key,value進行迭代處理;
-
函數(shù)
# 系統(tǒng)內(nèi)置函數(shù) , 如 abs() 求絕對值 abs(-100) # 自定義函數(shù) def add(num1,num2): return num1+num2 print(add(100,1)) # 返回多個值,類似解構(gòu)賦值 def add(num1,num2): return num1,num2 res1,res2 = add(100,1) print(res1,res2) # 函數(shù)可變參數(shù) def add(*nums): total = 0 for n in nums: total+=n return total print(add(3,4,5,6)) # 函數(shù)關(guān)鍵參數(shù),即必須傳入的參數(shù)和可選參數(shù), def addUser(name,**other): print({"name":name,"other":other) addUser("祖國",age=70,desc="生日快樂!") # 參數(shù)傳入時,可傳入 dict , info = {"age":70,"desc":"生日快樂!"} addUser("祖國",**info) # 命名關(guān)鍵字,即指定可選參數(shù)的名稱 ,以下 只能傳遞 'age'屬性 def addUser(name,*,age): print({"name":name,"other":age}) addUser("祖國",age=70)說明:
max()最大值;內(nèi)置函數(shù)規(guī)定了參數(shù)類型,參數(shù)個數(shù),不合規(guī)則就報錯;沒有給定返回值的函數(shù),默認返回
none;返回多個值時,可以進行解構(gòu)復(fù)制,賦值給變量進行使用;
函數(shù)參數(shù)定義,接受默認參數(shù)定義
def add(num1,num2=70)模擬可變參數(shù):
?傳入list對象,模擬傳遞不確定個數(shù)的參數(shù);
?*定義參數(shù)為可變參數(shù);
?**定義參數(shù)為可選參數(shù);參數(shù)傳入時,
**會轉(zhuǎn)換對象,按鍵值對傳入到**other
-
尾遞歸優(yōu)化
之前js 也寫過:es6 函數(shù)擴展
代碼比較短,貼一下://尾調(diào)用優(yōu)化 function factorial(n,total){ if(n===1) return total; return factorial(n-1,n*total); }意義在于每次調(diào)用都能獲得累積值,并作為參數(shù)傳入下一次調(diào)用函數(shù)中。
# total作為上一次函數(shù)調(diào)用后計算的值,傳入下一個參數(shù) def factorial(n,total): if n==1: return total return factorial(n-1,n*total) print(factorial(10,1))
注意:
-
if語句、while語句、函數(shù)定義等含有語句塊的都有:,且語句塊需要縮進;
附所有代碼執(zhí)行結(jié)果:
