日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python3基礎(chǔ)概覽

系統(tǒng) 1845 0

https://docs.python.org/3/tutorial/

#! /root/python-3.6.5/bin/python3.6 ?(制定用誰來解析下面的code,我沒有將pthon3.6安裝到系統(tǒng)路徑,就這樣寫了)
#! /usr/bin/env python3 ???(如果安裝在系統(tǒng)路徑,可以直接這樣寫)

?

基本運(yùn)算

Python算術(shù)運(yùn)算符

            
              /????除,x 除以 y(返回浮點(diǎn)型)
**????冪,返回x的y次冪
//????取整除,返回商的整數(shù)部分(類C語言的除)????9//2 輸出結(jié)果 4 , 9.0//2.0 輸出結(jié)果 4.0
            
          

Python比較運(yùn)算符

            
              ==, !=, >, <, >=, <=??(全部類C)
            
          

Python賦值運(yùn)算符

            
              =, +=, -=, *=, /=, %=, **=, //=??(全部類C)
            
          

Python位運(yùn)算符(全部類C)

            
              &, |, ^, ~, <<, >>,
            
          

Python邏輯運(yùn)算符

            
              and??????(試圖找到第一個false)從左到右計算表達(dá)式的值,為真則continue,所有均為真則結(jié)果為最后一個值,遇假返回第一個假的值

or????????(試圖找到第一個true)從左到右計算表達(dá)式的值,為假則continue,所有均為假則結(jié)果為最后一個值,遇真則返回第一個為真的值

除了True和False外,None,數(shù)字0,空序列(空字符串 "" ,空元組,空list和空字典)均被python認(rèn)為是假,其他認(rèn)為是真
            
          

Python成員運(yùn)算符 in / not in

            
              in????如果在指定的序列中找到值返回 True,否則返回 False。????x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

not in????如果在指定的序列中沒有找到值返回 True,否則返回 False。????x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

for xx in 序列,遍歷序列元素,序列可以是(有序的) string/list/tuple 或 (無序的) set/dict(dict.keys())
            
          

Python身份運(yùn)算符

身份運(yùn)算符用于比較兩個對象的存儲單元

            
              is????判斷兩個標(biāo)識符是不是引用自一個對象????x is y, 類似 id(x) == id(y) , 如果引用的是同一個對象則返回 True,否則返回 False

is not????判斷兩個標(biāo)識符是不是引用自不同對象????x is not y , 類似 id(a) != id(b)。
            
          

注: id()函數(shù)用于獲取對象內(nèi)存地址。如果x 和 y 賦予相同的value,那么python會讓兩個變量引用到 那個相同的內(nèi)存

?

?

數(shù)值類型

Python3 支持 int(python3中唯一的整數(shù)類型)、float、bool、complex(復(fù)數(shù))。Number值本身不允許改變(即,change某個變量的值其實(shí)就是新分配空間了) 。內(nèi)置的 type() 函數(shù)可以用來查詢變量所指的對象類型。

?

數(shù)據(jù)類型的轉(zhuǎn)換:

            
              ? int(x) 將x轉(zhuǎn)換為一個整數(shù)。

? str(x) 將x轉(zhuǎn)換為一個string。

? float(x) 將x轉(zhuǎn)換到一個浮點(diǎn)數(shù)。

? complex(x) 將x轉(zhuǎn)換到一個復(fù)數(shù),實(shí)數(shù)部分為 x,虛數(shù)部分為 0。

? complex(x, y) 將 x 和 y 轉(zhuǎn)換到一個復(fù)數(shù),實(shí)數(shù)部分為 x,虛數(shù)部分為 y。x 和 y 是數(shù)字表達(dá)式。
            
          

? 1、Python可以同時為多個變量賦值,如a, b = 1, 2。

? 2、一個變量可以通過賦值指向不同類型的對象。

? 3、在混合計算時,Python會把整型轉(zhuǎn)換成為浮點(diǎn)數(shù)。

? 4、Python支持復(fù)數(shù),復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a + bj,或者complex(a,b)表示,復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型

? 5、del value即刪除變量對數(shù)字對象的引用 (當(dāng)引用計數(shù)為0時,此數(shù)字對象可能會被garbage collect )

            
              >>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
????
              
                
                  
                    
                      
>>> isinstance(a, int)
????True
                    
                  
                
              
            
          

?

字符串

? 字符串使用單引號和雙引號等價。? 字符串相加表示連接,相乘表示重復(fù)。 ? 索引字符串 或 切片式索引 都是只讀的

            
              str1 = "hello fangding\n"????#轉(zhuǎn)義字符串,\n被轉(zhuǎn)義為換行
str2 = r"hello fangding\n"????#raw字符串,告訴python關(guān)閉轉(zhuǎn)義
str3 = u"hello fangding\n"????#u字符串,告訴python此串為unicode編碼(也會轉(zhuǎn)義的)
str4 = "your age %d,sex %s,record %12.5f\n"%(28,"male",78.5)????#格式化字符串(類C)(12.5f表示整個78.5占12個字符,小數(shù)點(diǎn)后保留5位精度)
str5 = '''
????多
????行
????串'''?????????#''' '''或者 """ """ 之間用于表示多行字符串(有\(zhòng)則同樣會轉(zhuǎn)義)

str1 = "hello fangding\n", 則str1[0]=="h",??str1[1]=="e",??str1[0]=="l",…….??#索引字符串,只讀,str1[0]="a"會導(dǎo)致出錯

str1[2:5]????????字符串取片段(左閉右開!) ,str1的第[2][3][4]個字符
str1[2:]? ? ? ? ? ?str1的第[2]到最后的所有字符
str1[2:-1]? ? ? ? str1的第[2]到第[-2]個字符(倒數(shù)第二個)
str1[:5]? ? ? ? ? ?str1從開始到第四個字符
str1[8:3:-1]? ? ?str1的第[8]到第[4]個字符,-1是步長
            
          

? 常用的字符串庫函數(shù) >>>help(str)

            
              len(str)????字符串的長度,特殊轉(zhuǎn)義字符包括\n也計算在內(nèi)
int(str)????將純數(shù)字字符串轉(zhuǎn)換為int(若字符串內(nèi)含非數(shù)字則會報錯)
ord(str)????獲得字符的ASCII碼值(str的len只能是1,否則報錯)
chr(int)????根據(jù)ASCII碼值得到字符
str.find(s,a,b)????????在str[a,b)區(qū)間內(nèi)查找字符串s(a和b均為可選參數(shù),不寫則默認(rèn)整個字符串),若出現(xiàn)多處,返回最左邊的index,沒找到返回-1
str.rfind(s,a,b)????在str[a,b)區(qū)間內(nèi)查找字符串s(a和b均為可選參數(shù),不寫則默認(rèn)整個字符串),若出現(xiàn)多處,返回最右邊的index,沒找到返回-1
str.strip()????????????去掉str左右兩邊的空格,相當(dāng)于str.strip(" "),若寫作str.strip("\n"),則去掉str左右兩邊的\n字符
str.lstrip()????????只是去掉str左邊的空格,相當(dāng)于str.lstrip(" ")
str.rstrip()????????只是去掉str右邊的空格,相當(dāng)于str.rstrip(" ")
str.split(" ")????以空格字符作為分隔符,分割str(若有多個連續(xù)空格,則中間的那些空格也會被捕捉),空格即split()默認(rèn)參數(shù)
str.replace("fang","ding")????將str中的所有"fang"全部替換為"ding",此函數(shù)返回一個副本,str引用的string變量沒有改變
str.isdigit()????????str是否是純數(shù)字?
str.isalpha()????????str是否是純英文字符?
str.isalnum()????????str是否是 數(shù)字+英文字符?
str.islower()????????str中包含的string是否都是小寫?
str.lower()????????????將str中包含的string全部轉(zhuǎn)為小寫
str.isspace()????????str是純空格嗎
            
          

?

列表

[ ] 之間、用逗號分隔開的元素列表,類似C中的數(shù)組,不同在于數(shù)據(jù)項可不同類型(甚至可為列表),可動態(tài)增減,長度不定。具有數(shù)組風(fēng)格和鏈表風(fēng)格。

            
              list = []
list1 = [12, "hello fang", 23.5]
list3 = list("this is ABC")?#將一個string轉(zhuǎn)化為一個list,list每個元素對應(yīng)了string中的每個字符

len(list1)????????????計算list1長度
list1[0]????????????訪問index為0的元素,越界會報錯,可讀寫訪問(string、元組均只讀訪問)、
list1[0:2:1]????????左閉右開取片段,返回一個包含有l(wèi)ist[0] list[1] 數(shù)據(jù)的新的list,1為缺省步長
for c in list1:?????迭代器訪問list元素
???xxx

list1= ( list1+ list2 ) * 2????????????等價于 list1.extend(list2) * 2 ,鏈表的連接
list1.append("www.baidu.com");????????在list末尾添加元素
list1.insert(index, 35.2)????????在list[index]元素前面插入新元素35.2
del list1[index]????????????????刪除list[index]元素
list1.remove(12)????????????????刪除list中值為12的元素
list1.pop(index)????????????????刪除list[index]元素并將其值返回,默認(rèn)pop最后一個
list1.index(23.5)????????????????返回 值為23.5的元素的index
list1.count(12)????????????????????統(tǒng)計 值為12的元素的個數(shù),可用于查看set中某個元素是否存在

min(list)?????返回列表中最小的元素
max(list)?????返回列表中最大的元素
sum(list)????返回列表中所有元素的總和(一般為純數(shù)字list)
list1.sort([func])????對原來的列表進(jìn)行排序(list1將被改寫,使用sorted(list1)則獲得臨時副本),可指定func作比較函數(shù),可指定reverse=True。
list1.reverse()????????反向列表的所有元素(list1將被改寫)
list1.clear()????????清空列表的所有元素
list1.copy()????????返回一個列表,和list1的元素完全相同
            
          

?

從序列創(chuàng)建列表。將一些操作應(yīng)用于序列的每個元素,結(jié)果作為生成新列表的元素,或者根據(jù)確定的判定條件創(chuàng)建子序列

            
              #對列表中的每個元素x,做x->[x,x^2]的映射,得到列表 [[2, 4], [4, 16], [6, 36]]
[[x, x**2] for x in vec1]
#完整的for-if列表推導(dǎo),對序列中 >3 的那些元素x,做x->3x的映射。if作為可選過濾器
[3*x for x in vec1 if x > 3]
#嵌套,對每一個元素x,執(zhí)行后面的for-if, 得到一個長度為 len(vec1)*len(vec2)的list
[x*y for x in vec1 for y in vec2]
#兩個序列對應(yīng)元素的乘積
[vec1[i]*vec2[i] for i in range(len(vec1))]
#得到一個string組成的list,string代表355/113,精度不斷增加
[str(round(355/113, i)) for i in range(1, 6)]
            
          

?

元組

寫在小括號 ( ) 里,元素之間逗號隔開,數(shù)據(jù)項可不同類型。與列表類似,但元組的元素不能修改,亦不可增刪。但可以一次刪除整個元組,元組的整體賦值相當(dāng)于指向另一個新的元組。函數(shù)多值返回得到的就是元組。

tuple string list均屬于sequence,三者之間可以互相轉(zhuǎn)換

            
              tup1=()????????????初始化一個空的元組
tup2=(1,)????????初始化一個只有一個元素的元組,注意必須要加上","不然會被python理解成int類型
tup1[index]????????只讀訪問第[index]個元素(不可以改變其指向)
tup3 = tup1+tup2*2????????????元組的連接,因為元組只讀,所以肯定是返回一個新的元組
for x in (1,2,3): print x????遍歷元組中的元素


            
          

集合

只關(guān)心元素存在與否,無序的不重復(fù)序列。用于成員關(guān)系測試和去重復(fù)元素,可以增刪元素。使用 { } 可用于創(chuàng)建集合或字典(區(qū)別在于里面的元素是單個數(shù)據(jù)還是鍵值對)。

            
              set1=set()????????????????????創(chuàng)建一個空的集合只能用set(), {}用于創(chuàng)建空的字典了
set2=set("abcasdg hkdf\n")????將一個string強(qiáng)制轉(zhuǎn)換為一個set,進(jìn)set過程自動去重復(fù),空格和\n也被認(rèn)為普通成員
set4={"Tom","Jim","Mary","Rose"}? ? 字面量創(chuàng)建一個set
set4.add("fang")????向集合中添加一個元素
set4.pop()????????????這是從集合中隨機(jī)彈出一個元素
set4.remove(xxx)????從集合中刪除元素xxx,若xxx不在集合中則會報錯
xxx in set4????????????判斷xxx是否在集合中
xxx not in set4????????判斷是否不在集合中
set2.issubset(set3)????????判斷set2是否是set3的子集合
set2.updata(set3)????????返回增加了set3元素后的集合set2

#返回一個集合,為set2 和set3的差集(即在set2中但不在set3中的元素), 等價于set2.difference(set3)
set2 - set3
#返回一個集合,為set2 和set3的并集(即在set2中或者在set3中的元素或者兩個都在的元素) 等價于 set2.union(set3)
set2 + set3
#返回一個集合,為set2 和set3的交集(即同時在set2和set3中的元素)??等價于 set2.intersection(set3)
set2 & set3
#返回一個集合,不同時在set2和set3中的元素
set2 ^ set3
a = {x for x in 'abracadabra' if x not in 'abc'}???????集合推導(dǎo)式(推導(dǎo)出一個集合)
            
          

?

鍵值對集合(字典)

鍵值對集合,即字典,多為哈希表實(shí)現(xiàn)。無序,通過key來訪問元素而不是index。key使用常量類型,且在同一個字典中應(yīng)該唯一

            
              dict1 = {}????????????????????????????????#初始化一個空的字典
dict2 = {"tom":98,"jim":86,"mary":92}????#初始化一個字典,若此時存在相同的key,則先出現(xiàn)的那個被覆蓋
dict1["one"] = "fang"????????#訪問修改字典某個key對應(yīng)的值。寫入時key不存在則向字典中添加鍵值對,key已存在則覆蓋,讀取時key不存在會報錯,key為字面常量,value無要求
dict1.get("tom","0")????????#獲取key為"tom"的value,若key不存在則返回"0"(不寫則返回None)
"one" in dict1.keys()????????#等價于 dict1.has_key("one"), dict1.keys()返回鍵值組成的list,dict1.values()返回值組成的list,dict1.items()返回(key,value)元組 組成的list
del dict1["tom"]????????????#刪除某個鍵值對
dict1.clear()????????????????#清空字典,對字典本身操作
del dict1????????????????????#刪除整個字典
dict1.pop("tom")????????#返回key為tom的value,并鍵值對從字典中刪除
dict1.popitem()????????????#隨機(jī)刪除字典中的一個鍵值對,并返回他們的鍵值對組成的元組

dict3 = {x : x**2 for x in (2, 4, 6)}?????#字典的推導(dǎo)式
for k,v in dict1.items():
????print(k,v)
            
          

?

流程控制

            
              ????if 表達(dá)式1:????????????#冒號
????????語句
????elif?表達(dá)式4:
????????語句
????else:
????????語句
            
          

沒有switch–case語句

            
              ????while 判斷條件:????#冒號
?? ??? ?語句
            
          

沒有do-while循環(huán)

            
              ????#!/usr/bin/env python3
????n = 100
????sum,counter = 0,1???????#復(fù)合賦值
????while counter <= n:
????????sum = sum + counter #若此循環(huán)體只有一句的話,是可以直接與while放在同一行的
????????counter += 1????????#計算1到100的和
????print("1 到 %d 之和為: %d" % (n,sum))
            
          

?

            
              ????while mylist:
????????mylist.pop()
            
          

while循環(huán)和else配合使用(區(qū)別于while內(nèi)部提前break)

            
              ????#!/usr/bin/python3
????count = 0
????while count < 5:
????????print (count, " 小于 5")
????????count = count + 1
????else: print (count, " 大于或等于 5")???#循環(huán)條件順次全部執(zhí)行完畢的時候才會進(jìn)入
            
          
            
              ????for 
              
                 in 
                
                  :
????????
                  
                    
????else:
????????
                    
                      ?????#順次全部執(zhí)行完畢后進(jìn)入(區(qū)別于while內(nèi)部提前break)
                    
                  
                
              
            
          

? ? for可以遍歷任何序列?eg.列表/字符串,可以遍歷range()函數(shù)生成的數(shù)字序列(c中 for(int i=0;i<10;i++)就使用range()來對標(biāo))。

            
              ????range(5)????????#生成一個0-4的序列,類型就是叫range
????range(5,10)????????#生成一個5-9的序列
????range(5,10,2)????#生成一個5-10,步長為2的序列(最后一個數(shù)可能并非10而是一個<10的數(shù))
????list(range(5))????????#range強(qiáng)制轉(zhuǎn)換為一個list
            
          
            
              ????for i in range(5):????????????#打印0-4
????????print(i)
            
          
            
              ????a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
????for i in range(len(a)):????????#C風(fēng)格訪問list
????????print(i, a[i])
            
          
            
                  #enumerate()能順便獲取序列元素的index(對string/list/tuple均適用)
    for i,x in?enumerate(tup3):
????    print(i,x)??
    #使用zip平行遍歷(同時訪問 list[i],tup[i])多個不要求同類型的序列
    for a,b in?zip(list1,tup1)
    ????print(a,b)

            
          

break 和 continue(類c)

pass 空語句,不做任何事情,一般用做占位語句

            
              ?? ?while True:????????????#相當(dāng)于while(1);
?????? ?pass
            
          

函數(shù)

            
              def funcA(a,b,c):
    return a+b+c
print(funcA(2,3,4))

def funcB(*x)
    print(x)    # 函數(shù)的參數(shù)前有*表示運(yùn)行時python收集可變參數(shù),組織成x傳入,x是一個元組

f = lambda a,b,c:a+b+c
print(f(2,3,4))
            
          

調(diào)用其它模塊

import其它python模塊(模塊是一個py文件,以.py結(jié)尾,其中包含python函數(shù),或python的class,或python對象)。(import 包) , (from 包 import 子包或子包內(nèi)的func/class/others)

            
              import sys
sys.path.append('fileA.py所在的路徑') ?? ??#同一個目錄下可以省略
#導(dǎo)入python文件level,貌似文件名不可以是數(shù)字,eg.2.py,不然 import 2 的時候會語法報錯
import fileA 
              
                

fileA.funcA()
              
            
          
            
              import sys
sys.path.append('fileA.py/fileB.py所在的路徑')
#導(dǎo)入python文件中的具體某個函數(shù)(from fileA import * 也是可以的)
from fileA import funcA,funcB
#導(dǎo)入python文件中的具體某個類??(from fileA import * 也是可以的)
from fileB import classA,classB

funcA()
ca = classA()
            
          

?

如果某個 目錄 dirA 下有 __init__.py 文件,那么這個 目錄 會被當(dāng)成一個包 (dirA下面的python文件就被當(dāng)作子包)??https://blog.csdn.net/u013210620/article/details/78554138

(python認(rèn)為 . 的左邊必須是一個python包,不滿足這個要求,就報錯)

            
              import dirA? ? ? ??? ???  #dirA.fileA.funcA()
import dirA.fileA? ? ? ?  #dirA.fileA.funcA()
from dirA import fileA ???#fileA.funcA()
from dirA.fileA import funcA,funcB
            
          

__init__.py 三個作用:?

1.表明此目錄作為一個python包,很多空的 __init__.py 就是只使用了功能(fileA.py 則 fileA 就被python默認(rèn)是一個包)

2.定義__all__=['subpackage', 'funcA', 'funcB', 'classA', 'classB'], 這樣外部調(diào)用 import * 的時候知道要import哪些

3.執(zhí)行一些python語句(他們會在import的時候被調(diào)用),比如 初始化包的語句 或者 import語句

            
              import sys, os
sys.path.append(os.pardir)??#好像直接寫 ".." 也是可以的
from common.functions import *
from common.gradient import numerical_gradient
            
          

?

更高level的調(diào)用

            
              import os
str=('../B.py')?????//也可以是一段shell腳本或者c的binary,只要是能在終端打的命令都可以
p=os.system(str)????//執(zhí)行
print(p)????????????//打印執(zhí)行結(jié)果 0表示 success, 1表示 fail
            
          

調(diào)用c/c++模塊?https://www.cnblogs.com/apexchu/p/5015961.html

(首先將c/c++文件make成so文件)

            
              import ctypes
#load the shared object file
xxx = ctypes.cdll.LoadLibrary('./xxx.so')
xxx.funcA()
xxx.funcB()
            
          

將c++模塊封裝為python接口?https://www.cnblogs.com/gkwang/p/4353220.html


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 平邑县| 新民市| 桃园市| 玉屏| 乌鲁木齐市| 滁州市| 恭城| 清丰县| 儋州市| 合作市| 屏东县| 紫阳县| 晋州市| 桐乡市| 库伦旗| 兴和县| 渭源县| 洪江市| 金华市| 故城县| 清流县| 沧源| 武城县| 中西区| 杭锦旗| 罗平县| 饶阳县| 雅江县| 贡山| 调兵山市| 桂平市| 务川| 乌什县| 井冈山市| 阳西县| 昭通市| 定边县| 平安县| 天门市| 平武县| 通城县|