age = 18 age = int('18')
+ - * / % // **
salary = 3.2 salary = float('3.2')
+ - * / % // **
name = 'nick' name = "nick" name = ''' nick nick ''' name = """ nick nick """ name = "'nick'" name = '"nick"'
friends_list = ['longzeluola','canglaoshi','qiaobenai','nick'] lis = list('abcd')
friends_tuple = ('longzeluola','canglaoshi','qiaobenai','nick') tup = tuple('abcd')
nick_info_dict = { 'name':'nick', 'height':180, 'weight':140, 'hobby_list':['read','run','music','fishing','programming','coding','debugging'] } for k,v in nick_info_dict.items(): print(k,v)
s = set() s = {1,2,3,4,5,1}
==
一個值 | 多個值 |
---|---|
整型/浮點型/字符串 | 列表/元祖/字典/集合/ |
有序 | 無序 |
---|---|
字符串/列表/元祖 | 字典/集合 |
可變 | 不可變 |
---|---|
列表/字典/集合 | 整型/浮點型/字符串 |
l1 = ['a','b','c',['d','e','f']] l2 = l1 l1.append('g') print(l1) # ['a','b','c',['d','e','f'],'g'] print(l2) # ['a','b','c',['d','e','f'],'g']
若是l2是l1的拷貝對象,則l1內部的任何數據類型的元素變化,則l2內部的元素也會跟着改變,由於可變類型值變id不變git
import copy l1 = ['a','b','c',['d','e','f']] l2 = copy.copy(l1) l1.append('g') print(l1) # ['a','b','c',['d','e','f'],'g'] print(l2) # ['a','b','c',['d','e','f']] l1[3].append('g') print(l1) # ['a','b','c',['d','e','f','g'],'g'] print(l2) # ['a','b','c',['d','e','f','g']]
若是l2是l1的淺拷貝對象,則l1內的不可變元素髮生了改變,l2不變;若是l1內的可變元素髮生了改變,則l2會跟着改變mongodb
import copy l1 = ['a','b','c',['d','e','f']] l2 = copy.deepcopy(l1) l1.append('g') print(l1) # ['a','b','c',['d','e','f'],'g'] print(l2) # ['a','b','c',['d','e','f']] l1[3].append('g') print(l1) # ['a','b','c',['d','e','f','g'],'g'] print(l2) # ['a','b','c',['d','e','f']]
若是l2是l1的深拷貝對象,則l1內的不可變元素髮生了改變,l2不變;若是l1內的可變元素髮生了改變,l2也不會變,即l2永遠不會由於l1的變化而變化api
age = 18 # 答案 count = 0 # 遊戲次數控制 prize_dict = { 0:'布娃娃', 1:'變形金剛', 2:'奧特曼', 3:'<Python從入門到放棄>' } # 核心代碼 while count < 3: inp_age = input('請輸入你的年齡>>>').strip() # 與用戶交互 # 判斷用戶是否騷擾 if not inp_age.isdigit(): print('傻逼,你的年齡輸錯了') continue inp_age_int = int(inp_age) # 核心邏輯,判斷年齡 if inp_age_int == age: print('猜對了') print(prize_dict) # 打印獎品 # 獲取兩次獎品 for i in range(2): prize_choice = input('請輸入你想要的獎品,若是不想要,則輸入"n"退出!!!').strip() # 與用戶交互獲取獎品 # 判斷是否須要獎品 if prize_choice != 'n': print(f'恭喜你得到獎品: {prize_dict[int(prize_choice)]}') else: break break elif inp_age_int < age: print('猜小了') else: print('猜大了') count += 1 # 成功玩一次遊戲 if count != 3: continue again_choice = input('是否繼續遊戲,繼續請輸入"Y",不然任意鍵直接退出.').strip() # 交互是否再一次 # 判斷是否繼續 if again_choice == 'Y': count = 0
+ - * / // % **閉包
+ - * / // % **app
可變 | 不可變 |
---|---|
列表,字典,集合 | 字符串,整形,浮點型 |
有序 | 無序 |
---|---|
字符串,列表,元組 | 字典,集合 |
存一個值 | 存多個值 |
---|---|
整型,浮點型,字符串 | 列表,集合,字典,元組 |
l1= [1,1] l2 = l1
l1 = [1,2,[1,2]] import copy l2 = copy.copy(l1)
l1 = [1,2,3,[2,3]] import copy l2 = copy.deepcopy(l1)
當python3解釋器啓動,並生成變量時,會以unicode的形式把變量讀入內存,當咱們使用print方法時,print會自動按照終端的字符編碼 編碼unicode形式的變量dom
生成變量時以unicode丟入內存,終端時gbk,仍是utf8,這終端均可以識別。
生成變量時以utf8丟入內存,終端爲utf8,能夠,可是終端爲gbk,不能夠了。==錯誤==函數
with open(文件名,打開模式,編碼格式) as f: f.操做命令
with open(文件一),open(文件二),open(文件三)……
with open('a.txt','r',encoding='utf8') as fr, open('a_swap.txt','w',encoding='utf8') as fw: data = fr.read() # 作一些處理以後 fw.write(data) fw.flush() import os os.remove('a.txt') os.rename('a_swap.txt','a.txt')
def 函數名(): 代碼塊
def f1(): return 2 f1() f = f1()
import random import time with open('0531總複習.md','r',encodint='utf8') as fr: for i in range(50): fr.read(random.randint(1,300)) time.sleep(30)
def f1(): pass # 1.引用 f = f1 # 2.看成返回值 def f2(): return f1 # 3. 看成參數傳入 def f3(func): func() f3(f1) # 4. 做爲容器元素 lis = [1,2,3,[2,3],f1,f2,f3]
def f1(): def f2(): pass
做用域: 全局的變量和局部的變量沒有任何關係,即便二者中有同一名字的變量,贊成名字的變量之間進行任何操做都不會影響對方編碼
x = 10 def f1(): x = 2 print(x) # 2 f1() print(x) # 10
lis = [1] def f1(): lis[0] = 2 f1() print(lis) # [2]
def f1(x): def f2(): print(x) return f2 f = f1(5) # f-->f2,x=5 f() # f()-->f2(),x=5 # 5 f() # 5 f3 = f1(3) # f-->f2,x=3 f3() # f()-->f2(),x=3 # 3 f3() # 3
def deco(func): def wrapper(*args,**kwargs): # 賦值後的time_sleep res = func(*args,**kwargs) # 真正的time_sleep return res return wrapper @deco # time_sleep(賦值後的) = deco(time_sleep(真正的)) def time_sleep(name): print(name) return 123
is_login_dict = {'username': None} def login_deco(func): def wrapper(*args, **kwargs): # 賦值後的time_sleep if not is_login_dict['username']: username = input('請輸入你的用戶名》》》').strip() if username != 'fanping': print('非法登陸') return is_login_dict['username'] = username res = func(*args, **kwargs) # 真正的time_sleep return res else: res = func(*args, **kwargs) # 真正的time_sleep return res return wrapper @login_deco def shopping(): print('from shopping') @login_deco def withdraw(): print('from withdraw')
is_login_dict = {'username': None} def auth(origin): def login_deco(func): def wrapper(*args, **kwargs): # 賦值後的time_sleep if origin == 'file': if not is_login_dict['username']: username = input('請輸入你的用戶名》》》').strip() if username != 'fanping': print('非法登陸') return is_login_dict['username'] = username res = func(*args, **kwargs) # 真正的time_sleep return res else: res = func(*args, **kwargs) # 真正的time_sleep return res elif origin == 'mongodb': print('非法登陸') else: print('dsb') return wrapper return login_deco # f = origin('file') # login_deco # shopping = f(shopping) # shopping() @auth('file') def shopping(): print('from shopping') @auth('mongodb') def withdraw(): print('from withdraw')