1.無名関数
無名関数は、関数の行であり、
無名関数の名前は、ラムダと呼ばれ、
ラムダ<==> DEFキーワード
格式:lambda x:x+1
x:冒号前x,是普通函数的形参,可以不接收参数(x可以不写)
:x -- 冒号后x,是普通函数的返回值(只能返回一个数据类型)(x必须写)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824091103215-565349816.png)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824091139310-386275702.png)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824091143199-986919084.png)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824091148580-2091704666.png)
函数体中存放的是代码
生成器体中存放的也是代码
就是yield导致函数和生成器的执行结果不统一
匿名函数拆解:
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824091335341-319983627.png)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824091344280-525414737.png)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824091348345-2064560872.png)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824091352204-1676848965.png)
2.組み込み関数
:辞書定義二つの方法である
印刷(辞書([(1,2)、(3,4)]))
印刷(。。辞書(K = 1、V = 2、C = 3))
合成辞書方法:
2つのキーが文字列の辞書でなければなりません
print() 屏幕输出
sep -- 每个元素之间分隔的方法,默认为空格
end -- print执行完后的结束语句,默认换行符\n
file -- 文件句柄,默认显示到屏幕
flush -- 刷新
sum() --求和
sum([1,2,2,1]) -- 必须是可迭代对象,可迭代对象中的元素必须为整型
sum([1,2,3],100) -- 100 为指定起始位置的值
abs() -- 绝对值
dir() -- 查看当前对象的所有方法,返回的是列表
zip -- 拉链方法 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的内容,如果各个可迭代对象的元素个数不一致,则按照长度最短的返回
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824091734818-1093158998.png)
format -- 格式转换
print(format("alex",">20")) # 右对齐
print(format("alex","<20")) # 左对齐
print(format("alex","^20")) # 居中
print(format(10,"b")) # bin 二进制
print(format(10,"08b")) 八位
print(format(10,"08o")) # oct 八进制
print(format(10,"08x")) # hex 十六进制
print(format(0b1010,"d")) # digit 十进制
reversed -- 反转
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824092323696-1111943440.png)
高阶函数
所有的高阶函数在内部都进行了for循环
filter -- 过滤
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824092359163-116533077.png)
print(list(filter(lambda x:x>2,[1,2,3,4,5])))
1,指定过滤规则(函数名[函数的内存地址]) 2,要过滤的数据
map -- 映射函数 (将可迭代对象中的每个元素执行指定的函数)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824092456145-296056039.png)
sorted -- 排序函数
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824092533222-1683516770.png)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824092537273-163751094.png)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824092540522-1926127.png)
max() -- 最大值
min() -- 最小值
reduce -- 累计算
from functools import reduce
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824092645174-290658181.png)
前記閉鎖
非層クロージャのネストされた関数で、非使用は、グローバル変数であり、
印刷(内側.__ closure__)か否かリターンなし閉鎖閉鎖決定
閉鎖アクション:
1.セキュリティ保護
2 。デコレータ
4.デコレータ
オープン閉鎖原則
拡散コードのが開いている
ソースコードを変更すると閉鎖と呼ばれる
機能が追加のデコレータ追加することである、ソースコードを変更することなく、また呼ばれる
START_TIME = time.timeを() -タイムスタンプ
第一版装饰器
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824093420075-1183425204.png)
语法糖
python帮咱们做的一个东西,语法糖
要将语法糖放在被装饰的函数正上方
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824093543227-1772735034.png)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824093547959-1905007806.png)
不带语法糖的装饰器
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824094027598-1722066331.png)
5.高度なデコレータは、
パラメータのデコレータが持つ
パラメータがあります外層標準デコレータ、カバーの層、いくつかのセットは、1コールの追加の層が必要です
糖衣構文を:@auth(パラメータ)
多个装饰器装饰一个函数
多个装饰器装饰一个函数的时候,先执行离被装饰函数最近的装饰器
小技巧: V
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824095510775-706015635.png)
5.再帰
リターンの配信
配信:質量参加がされています
返さ:リターンは
自分自身を呼び出すために続けて(これだけは無効再帰、死ん再帰的である)
DEF FUNC():
印刷(1)
FUNC()
FUNC()は、
明確な終了条件を持っています
再帰の最大深さ(レベル)は、実際のテスト997分の998の1000公式説明
シナリオ再帰:
6.カスタムモジュールの
モジュールは、あなたが行うことができますか?
ドキュメント管理、可読性を向上させる、コードの重複を避ける
特に中(の作成ホイールを重複を避けるために)使用するために使用するPythonライブラリ
モジュールの定義
ファイルのモジュールである(モジュールがツールボックスで、ツールの機能である)
のインポートは行います三つのことは
、すべてのコードモジュールは、現在のファイル読み込み意志
現在のファイルのオープンスペース
と呼ばれるのを待って
、あなたが同じモジュール名をインポートする場合、インポートを一度だけ実行
インポート+モジュール名だけモジュール全体の持って来ることができる
モジュール名を長すぎるエイリアスを再生することができるときであります、以前の内容が上書きされないよう
import test as t
from test import t1 as t
、インポートからの支援として
インポートモジュールは、接尾辞を追加することはできません
軒並み利益はエラーを示すものではありません
、インポートからと推奨から
の輸入との差から
のみインポートツールから
、モジュール全体のすべての機能を実行するために、インポート
は簡単から現在のファイルのカバーで定義された機能
インポートよりフレキシブルから
インポート導入指定された機能からインポートされたすべての
インポートほとんどない操作の背後には、
インポートおよび使用からの相対パスである
インポートSYS#1 Pythonと解釈インタラクティブインタフェース
ルックアップモジュール順次
sys.path.append( R "C:\ユーザーはoldboy \ \デスクトップ")
メモリ>内蔵>サードパーティ>カスタム
sys.path.insert(0、R「C: \ユーザーはoldboy \デスクトップ\」)
メモリ>カスタマイズ>内蔵>サードパーティ
sys.path.appendパスを見つけるために、モジュールを追加し、 Pythonインタプリタの環境変数
模块的两种用法
当作模块被导入
当作脚本被执行
if __name__ == "__main__":
当文件被当做模块被调用的时候__name__返回的当前模块名
当文件当做脚本执行时__name__返回的__main__
- 只有py文件当做模块被导入时,字节码才会进行保留
注意自定义模块的名字,不能与内置模块重复
注意自己的思路 -- 循环导入时建议 导入模式放在需要的地方,不能交叉导入
不建议一行导入多个模块
通过__all__ 控制要导入的内容`
`__all__ = ["func"]`
from test import * -- 拿整个模块
pip -- 管理包工具
7.Time
インポート時間-ビルトインモジュール-標準ライブラリを
time.time() -タイムスタンプ、浮動小数点秒
time.sleep()スリープ
タイムスタンプは、構造化された時間に変換される
(time.localtime) - -現在時刻のデフォルト
印刷(time.localtime(time.time()) )結果はタプル
プリント(time.localtime(time.time()) [0]) インデックス値
プリント(time.localtime(time.timeを(名前の値に基づいて))。tm_yearが)
将结构化时间转换成字符串
time.strftime()
time_g = time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S",time_g))
将字符串转换成结构化时间
time.strptime()
str_time = "2018-10-1 10:11:12"
time_g = time.strptime(str_time, "%Y-%m-%d %H:%M:%S")
print(time_g)
将结构化时间转换成时间戳
time.mktime()
time_g = time.localtime()
print(time.mktime(time_g))
%Y 年 %m 月 %d 日 %H 时间 %M 分钟 %S 秒
8.datatime
日時日時インポートから
プリント- ---差日、時間、分、(日時(2018年、10 ,. 1、10 ,. 11、12である)日時(2011 ,. 11 ,. 1、20、10、10)です)第2
from datetime import datetime print(datetime.now()) # 获取当前时间
タイムスタンプにオブジェクトを変換
datetime.timestamp()
D = DateTime.Now()
プリント(d.timestamp())
オブジェクトにタイムスタンプを変換する
datetime.fromtimestamp()
インポート時間
F_T time.time =()
プリント(日時。 fromtimestamp(F_T))
文字列にオブジェクトを変換する
datetime.strftime()
D = DateTime.Now()
プリント(d.strftime( ":%のM:%D %% Y-M-%のH%Sは"))
であろうオブジェクトへのストリング
datetime.strptime()
S = "2018年12月31日10時11分12秒"
を印刷(datetime.strptime(S、 ":%のM:%S%Y-M-%のD %% H" ))
可以进行加减运算
from datetime import datetime,timedelta
print(datetime.now() - timedelta(days=1)) -- 按天减(减一天)
print(datetime.now() - timedelta(hours=1)) --- 按小时减
9.random -ランダム
インポートランダム
プリント(random.randint(1,50))
1-50の間のランダムな整数を選択
プリント(はrandom.Random())
0と1の間のランダム小数を、含まれていない1つの。
印刷( random.uniform(1,10))
1-10の間のランダム進、10が含まれていない
印刷(random.choice((1,2,3,4,5,7)を))
ランダムからコンテナを選択し
、印刷(ランダムに.choices((1,2,3,4,5,7)、K = 3))は
リストモード形式で、容器からの3つのランダム要素を選択し、反復要素が存在することになる
プリント(random.sample((1、 2,3,4,5,7)は、K = 3))は
リストモード形式で、容器からの3つのランダム要素を選択し、要素のない複製
プリント(random.randrange(1,10,2))ランダム奇数または偶数ランダム
lst = [1,2,3,4,5,6,7]
random.shuffle(lst)
洗牌 将有序的数据打散
print(lst)
10.ソフトウェア開発仕様
サブファイル管理
コード内のPYファイルがある
、管理、変更、追加することは容易ではありません
が悪い可読性
遅いロード
ソフトウェア開発仕様のは、Djangoののプロトタイプである
大会:
-スタートアップファイル- start.pyインタフェースを開始
common.py -公文書-あなたが機能するために必要な
seetings.pyを-また、静的ファイルとしても知られ、店の変数-プロファイル
src.py -メインロジックファイル
レジスタ-ユーザーデータファイル
logg.log -ログファイル
ビン-スタートアップフォルダ
のlib -パブリックフォルダ
のconf -設定フォルダの
コア-正論理フォルダ
DB -データフォルダの
ログ-ログファイル
11.sys
SYSは何をするPythonインタプリタと対話
の順序を見つけるために、印刷(のsys.path)モジュールを
のみ、端末の代わりに実行することができ、入力された印刷(sys.argvの)
印刷(sys.modules)を表示モジュールがメモリにロードされて
はsys.platform(プリントWin32 -ダーウィンは勝つ- )現在のオペレーティング・システム・プラットフォームのMACを表示
)印刷(ここで、sys.versionをインタプリタの現在のバージョンを表示します
12の配列
の配列:データを変換する文字列型(ダンプ、ダンプ)
デシリアライゼーション:元のデータタイプ(負荷荷重)に文字列を変換し
負荷をダンプ-ネットワーク伝送のための
ダンプ負荷-のために文書保管
JSON
JSONシーケンスが可能:辞書、リスト、タプル配列へのタプルリスト
json.dump(dic,open("a","a",encoding="utf-8")) 将源数据类型转换成字符串,写入到文件中
print(json.load(open("a","r",encoding="utf-8"))['key']) 将文件中字符串转成源数据类型
pickle
只有python有,几乎可以序列python中所有数据类型,匿名函数不能序列
a = pickle.dumps(func) 将原数据类型转换成类似字节的内容
print(pickle.loads(a)) 将类似字节的内容转换成原数据类型
13.osは
パスを作業:
インポートOS - OSはオペレーティングシステムであると対話するか、オペレータへの指示発行
os.getcwdを() -現在の作業ディレクトリのファイル取得
の経路切り替え- os.chdir(「絶対パス」)
のOSを.curdir - (「 『)、現在のディレクトリを返します
os.pardir -親ディレクトリ(』 ..」)の現在のディレクトリ文字列名を取得
文件夹:
os.mkdir("文件夹名") -- 创建文件夹
os.rmdir("文件夹名") -- 删除文件夹
os.makedirs("文件夹名/文件夹名") -- 递归创建文件夹
os.removedirs("文件夹名/文件夹名") -- 递归删除文件夹名
os.listdir("绝对路径") -- 查看当前文件夹下所有内容
文件:
os.remove("绝对路径") -- 删除文件,彻底删除,找不回来
os.rename() -- 重命名
路径:
os.path.abcpath("文件名") -- 返回的是绝对路径
os.path.split("绝对路径") -- 将路径分割成一个路径和一个文件名
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824102320297-368837189.png)
os.path.dirname("绝对路径") -- 获取到父目录
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824102337736-1423795003.png)
os.path.basename("绝对路径") -- 获取文件名
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824102353637-1067733296.png)
os.path.join("绝对路径","文件名") -- 路径拼接(非常重要)
![](https://img2018.cnblogs.com/blog/1754444/201908/1754444-20190824102423904-1050365437.png)
判断:
os.path.exists("绝对路径") -- 判断当前路径是否存在
os.path.isabs("绝对路径") -- 判断是不是绝对路径
os.path.isdir("绝对路径") -- 判断是不是文件夹
os.path.isfile("绝对路径") -- 判断是不是文件
os.path.getsize("绝对路径") -- 获取文件大小