內建函式:
callable:檢視物件是否能被呼叫(物件是函式的話能被呼叫)
#callabledef f1():
pass
f2="a"
print(callable(f1))
print(callable(f2))
#chr() 將ascii碼轉換成對應的字元
#ord() 相反
print(chr(65))print(ord("b"))
生成乙個6位的隨機驗證碼:
#!/usr/bin/env python# -*- coding:utf-8 -*-
import random
li=for i in range(6):
r=random.randrange(0,5)
if r == 2:
temp=random.randrange(0,10)
elif r == 4:
temp=random.randrange(97,123)
k=chr(temp)
else:
temp=random.randrange(65,91)
k=chr(temp)
print("".join(li))
v67dj2a
compile() 將字串,編譯成python**
exec() 執行 比eval功能更強大,直接執行python**或者字串(如果接收的是字串的話,內部會執行compile),沒有返回值
eval() 執行 主要是用來執行表示式的,有返回值
python直譯器執行檔案要經過以下幾個步驟:
2.python直譯器把 字串—》編譯—》特殊** compile完成
編譯模式:
single:編譯成單行的python程式
eval:編譯成表示式
exec:編譯成和python**一模一樣的東西
with open("zy.py","r",encoding="utf8") as f:r = compile(f.read(),"","exec")
exec(r)
bbdfji
zy.py是上面的6位隨機驗證碼程式,這個就模擬了python直譯器的執行過程
s = "print(123)"r = compile(s,"","exec")
print(r)
print(type(r))
exec(r)
at 0x0000000000802db0, file "", line 1>
123
s = '''print(123)
print(456)
'''r = compile(s,"","single")
exec(r)
traceback (most recent call last):
file "c:/users/administrator/pycharmprojects/untitled/day4.py", line 14, in
r = compile(s,"","single")
file "", line 2
print(123)
^syntaxerror: multiple statements found while compiling a single statement
s = '''print(123)
print(456)
'''r = compile(s,"","exec")
exec(r)
123456
print(eval("2+3"))a="[1,2,3,4]"
li=eval(a)
print(type(li))
b=''
dic=eval(b)
print(type(dic))
5delattr,getattr,setattr,hasattr 反射 以後講
dir() 快速檢視乙個物件提供什麼功能,不顯示功能詳細
help() 顯示功能詳細
divmod()
#divmod() 得到商和餘數,返回值是元組#共97 每頁顯示10 總共多少頁
print(divmod(97,10))
n1, n2 = divmod(97,10)
print("n1",n1)
print("n2",n2)
(9, 7)
n1 9
n2 7
物件是類的例項 則true
isinstance()
#isinstance() 判斷物件是否是某個類的例項s="alex"
r=isinstance(s,list)
print(r)
false
filter(函式,可迭代的物件)
def f1(a):if a>22:
return true
li=[11,22,33,44,55]
ret = filter(f1,li)
print(ret)
print(list(ret))
[33, 44, 55]
filter和lambda組合:
li=[11,22,33,44,55]ret = filter(lambda a: a > 33,li)
print(list(ret))
[44, 55]
map(函式,可迭代物件),對可迭代物件的每個元素都進行處理
li=[11,22,33,44,55]def f(a):
return a+100
ret = map(f,li)
print(ret)
print(list(ret))
[111, 122, 133, 144, 155]
li=[11,22,33,44,55]ret = map(lambda a: a+100 , li)
print(ret)
print(list(ret))
[111, 122, 133, 144, 155]
filter:函式返回true 則元素新增到結果中
map: 將函式返回值新增到結果中
name = "alex"def show():
a=123
print(globals())
print(locals())
show()
如果乙個字串是字典或者列表等形式的,一定是單引號在外邊,雙引號在裡面
裝飾器:
@ + 函式名
功能:1.自動執行outer函式並且將其下面的函式名f1當作引數傳遞
2.將outer函式的返回值,重複賦值給f1
詳細過程:
1. 將outer函式加載入記憶體
2. 執行@outer 將函式名f1傳給func(func=原f1),執行outer
3. 將inner函式加載入記憶體
4. 將outer函式的返回值inner,重新賦值給f1,(f1=inner)
5. 當呼叫f1時,就執行inner(),inner中的func=原f1
適用場景:
主要是許可權控制
def outer(func):def inner(*args,**kwargs):
print("before")
ret = func(*args,**kwargs)
print("after")
return ret
return inner
@outer
def f1(aa):
print("f1")
return aa
@outer
def f2(*args,**kwargs):
print("f2")
for index,items in enumerate(args):
print(index,"-"*5,items)
for k in kwargs:
print(k,"-"*5,kwargs[k])
f2(1,2,3,a=1,b=2,c=3)
before
f20 ----- 1
1 ----- 2
2 ----- 3
b ----- 2
c ----- 3
a ----- 1
after
成長記第四天
關於檔案的處理可以分成四種 1.write 寫入 2.read 讀取 在讀檔案的時候我們可以進行讀整個檔案 hj open c users miss desktop 檔名.txt r 執行後在shell介面輸入hj.read 後,再按回車鍵,就可以看到你的文字檔案了 但也可以進行讀取每一行的操作 h...
c 學習之路(第四天)
溫習一下記憶體分布模型 c 在執行 的時候。將記憶體大致劃分為4個區域 區 文字區 存放 的 二進位制 作業系統管理 全域性區 存放全域性變數和靜態變數 堆 由程式設計師分配釋放 棧 作業系統分配釋放 靜態成員是指宣告為static的類成員在類的範圍內所有物件共享某個資料。靜態成員函式只能訪問靜態資...
c 自學之路第四天
一 筆記 1.語法 public enum 列舉名 public 訪問修飾符,公開得公共的,哪都可以訪問 enum 關鍵字,宣告列舉的的關鍵字 列舉宣告到命名空間下面 2.ctrl k d 快速對齊 ctrl z 撤銷 ctrl s 儲存 ctrl j 快速彈出智慧型提示 shift end shi...