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')