欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python3 基礎

系統 1743 0

目錄

?

基礎特性

數據結構/常用函數

函數

裝飾器

文件

異常

模塊

常用模塊

基礎特性

●首部添加#!/usr/bin/env python3表示這是一個python3程序

●變量為動態類型,弱類型語言的主要特性之一,要聲明變量直接變量名=xx即可,如x=777

●語句之后沒有分號; 作為結束,取而代之的是每行首部的縮進進行標識?

●運算符號中**代表^即指數,#為//,即注釋,""" ... """為文檔字符串,即/** ... */

●默認數值類型為浮點型

●基本類型函數; ?int(變量),float(變量),str(變量)等 ?將變量直接變為指定類型

●不使用{}區分代碼塊,而是用冒號:

●&& || ! ?分別變為 and or not

●庫用import導入, 如import math

●允許交換依次賦值,例:a,b=b,a+b按照順序語句理解即可

●if __name__ == '__main__':表示程序執行的入口(如c中的main)Python本身并沒有這么規定,這只是一種編碼習慣。由于模塊之間相互引用,不同模塊可能有這樣的定義,而程序入口只有一個。到底哪個程序入口被選中,這取決于 __name__ 的值。 _name__ 是內置變量,可用于表示當前模塊的名字

●input("提示消息,可加可不加") ? --從終端接收數據

●print() ?輸出數據

? ? ? ? ? ? print("...{}".format(變量),end="x") ? 格式化輸出數據, 如:print('{:.10f} {}'.format(x,y)),以保留10個小數點的格式輸出x,直接輸出y

end=“x”代表每個元素以x結尾,詳情自查

●字符串若是乘上整數 n,將返回由 n 個此字符串拼接起來的新字符串,例:?'s' * 10 等于'ssssssssss'

數據結構/常用函數

列表list,可用作棧/隊列

聲明,如:a=[1,2,3]

主要函數:

  • append(x):將x添加到尾部
  • insert(index,x):將x插入到索引index處
  • count(x):返回x出現的次數
  • remove(x):移除x
  • pop(index):將索引index處的元素彈出
  • reverse():翻轉列表
  • extend(b):將列表b添加到列表結尾
  • sort():排序
  • 可使用del關鍵字刪除指定位置的列表元素。如del a[0]

列表推導式:一種列表推導的簡寫方式,列表推導式由包含一個表達式的中括號組成,表達式后面跟隨一個 for 子句,之后可以有零或多個 for 或 if 子句。結果是一個列表,由表達式依據其后面的 for 和 if 子句上下文計算而來的結果構成,如:squares = [x**2 for x in range(10)]

切片:返回列表某個范圍內的列表,即訪問某段內的元素,如a[:3]

翻轉:a[::-1]

元組tuple

元素不可變的列表

聲明,如 a=(1,2,3)或者,a=1,2,3

這樣聲明就是元組,編輯元組元素會報錯

集合set

集合是一個無序不重復元素的集。

聲明,如a={1,2,3},或者a=set()(即創建一個集合),可以傳參數,該參數為初始列表,如a = set('ab')為{a,b}

如果想要創建空集合,必須使用 set() 而不是 {}。后者用于創建空字典。

? 交并差& | - ?a^b:存在于a或b但不能同時存在

字典dictionary

字典是是無序的鍵值對( key:value )集合。

聲明,如a={1:2,2:3}

items():用于迭代字典,返回為(x,y),類型為class dict_items

字符串string
聲明 s=""
如果你想要分幾行輸入字符串,并且希望行尾的換行符自動包含到字符串當中,可以使用三對引號:"""\...""" 或 '''\...''' 。
string有各種內置方法

  • title() ?返回字符串的標題版本,即單詞首字母大寫其余字母小寫
  • upper() ?返回字符串全部大寫的版本
  • upper() ?返回字符串全部大寫的版本
  • swapcase() ?返回字符串大小寫交換后的版本
  • isalnum() ?檢查所有字符是否只有字母和數字
  • isalpha() ?檢查字符串之中是否只有字母
  • split() ?分割任意字符串, split() ?允許有一個參數,用來指定字符串以什么字符分隔(默認為? " " ),它返回一個包含所有分割后的字符串的列表。
  • join(list) ?使用指定字符連接多個字符串,將列表list中的元素用該字符串連接起來
  • strip(chars) ,用來剝離字符串首尾中指定的字符,默認為" ",剝離規則為按chars中的char順序尋找該字符串,找到刪除,若不指定參數,則效果為剝離首尾空格與換行符
  • lstrip(chars)) ?只對字符串左剝離
  • ? rstrip(chars) ?只對字符串右剝離。
  • find() ?找到第一個匹配的子字符串,沒有找到則返回 -1

通用函數:
type(a):返回a的類型
len(a): 返回 a的長度
range(a,b,c):生成一個等差數列,非列表,a,b為范圍,c為差值

函數

定義函數:
def 函數名(參數):
? ? 語句1
? ? 語句2
global關鍵字定義全局變量,即使在函數內部也可以定義
函數的參數變量可以有默認值:def test(a , b=-99):
可以接收一個函數作為參數,在函數內部使用參數函數,即高級函數

map(function,list):
map 是一個在 Python 里非常有用的高階函數。它接受一個函數和一個序列(迭代器)作為輸入,然后對序列(迭代器)的每一個值。返回一個序列(迭代器),其包含應用函數后的結果。
舉例:
>>> lst = [1, 2, 3, 4, 5]
>>> def square(num):
... ? ? return num * num
>>> print(list(map(square, lst)))
[1, 4, 9, 16, 25]

可變參數? * args ?/關鍵字參數? ** kwargs( 來源于: https://zhuanlan.zhihu.com/p/50804195)

在Python中的代碼中經常會見到這兩個詞 args 和 kwargs,前面通常還會加上一個或者兩個星號。其實這只是編程人員約定的變量名字,args 是 arguments 的縮寫,表示位置參數;kwargs 是 keyword arguments 的縮寫,表示關鍵字參數。這其實就是 Python 中可變參數的兩種形式,并且 *args 必須放在 **kwargs 的前面,因為位置參數在關鍵字參數的前面。

*args

*args就是就是傳遞一個可變參數列表給函數實參,這個參數列表的數目未知,甚至長度可以為0。

            
              def test_args(first, *args):
    print('Required argument: ', first)
    print(type(args))
    for v in args:
        print ('Optional argument: ', v)

test_args(1, 2, 3, 4)
            
          

第一個參數是必須要傳入的參數,所以使用了第一個形參,而后面三個參數則作為可變參數列表傳入了實參,并且是作為元組tuple來使用的。代碼的運行結果如下

            
              Required argument:  1

              
                
Optional argument:  2
Optional argument:  3
Optional argument:  4

              
            
          

**kwargs

而**kwargs則是將一個可變的關鍵字參數的字典傳給函數實參,同樣參數列表長度可以為0或為其他值。下面這段代碼演示了如何使用kwargs

            
              def test_kwargs(first, *args, **kwargs):
   print('Required argument: ', first)
   print(type(kwargs))
   for v in args:
      print ('Optional argument (args): ', v)
   for k, v in kwargs.items():
      print ('Optional argument %s (kwargs): %s' % (k, v))

test_kwargs(1, 2, 3, 4, k1=5, k2=6)
            
          

正如前面所說的,args類型是一個tuple,而kwargs則是一個字典dict,并且args只能位于kwargs的前面。代碼的運行結果如下

            
              Required argument:  1

              
                
Optional argument (args):  2
Optional argument (args):  3
Optional argument (args):  4
Optional argument k2 (kwargs): 6
Optional argument k1 (kwargs): 5
              
            
          

調用函數

args和kwargs不僅可以在函數定義中使用,還可以在函數調用中使用。在調用時使用就相當于pack(打包)和unpack(解包),類似于元組的打包和解包。

首先來看一下使用args來解包調用函數的代碼,

            
              def test_args_kwargs(arg1, arg2, arg3):
    print("arg1:", arg1)
    print("arg2:", arg2)
    print("arg3:", arg3)

args = ("two", 3, 5)
test_args_kwargs(*args)

#result:
arg1: two
arg2: 3
arg3: 5
            
          

將元組解包后傳給對應的實參,kwargs的用法與其類似。

            
              kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
test_args_kwargs(**kwargs)

#result
arg1: 5
arg2: two
arg3: 3
            
          

args和kwargs組合起來可以傳入任意的參數,這在參數未知的情況下是很有效的,同時加強了函數的可拓展性。

語法

            
              class nameoftheclass(parent_class):
    statement
            
          

初始構造方法

            
              def __init__(self):
    self.data = []
            
          

self即代表該類本身(類似于this),任何函數都可以傳該參數該方法在構建類的實例時被執行,當然該方法可以傳參,并使用self進行賦值

例:

            
              >>> class Complex:
...     def __init__(self, realpart, imagpart):
...         self.r = realpart
...         self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)
            
          

聲明類實例

? x=nameoftheclass()

繼承

在class()中傳一個class即代表繼承于該類,通用父類為object

例:

            
              #!/usr/bin/env python3

class Person(object):
    """
    返回具有給定名稱的 Person 對象
    """

    def __init__(self, name):
        self.name = name

    def get_details(self):
        return self.name


class Student(Person):
    """
    返回 Student 對象,采用 name, branch, year 3 個參數
    """

    def __init__(self, name, branch, year):
        Person.__init__(self, name)
        self.branch = branch
        self.year = year

    def get_details(self):
        return "{} studies {} in {} year.".format(self.name, self.branch, self.year)

person1 = Person('x')
student1 = Student('y', 'CSE', 2045)


            
          

多繼承

python支持多繼承,在class()中傳多個class即可

刪除對象

使用關鍵字del可以刪除實例對象

del ?實際上使對象的引用計數減少一,當對象的引用計數變成零的時候,垃圾回收器會刪除這個對象。

? @property ?裝飾器

? @property ?裝飾器, @property ?裝飾器就是負責把一個方法變成屬性調用的。

說實話,這玩意讓我想到了java的注解,在函數上使用該裝飾器,可以把該函數當成屬性來調用,返回值為一個property對象(實際上所有裝飾器都返回一個函數或者對象,作用就是為指定函數/屬性添加功能,即進行切面)

裝飾器

裝飾器的作用就是為函數增加功能(切面),@的寫法相當于語法糖

            
              def debug(func):
   def wrapper(*args, **kwargs):  # 變參
       print "[DEBUG]: enter {}()".format(func.__name__)               
       return func(*args, **kwargs)    
   return wrapper 

@debug
def say(something):
   print "hello {}!".format(something)
            
          

可以看到,debug為裝飾器,實際上就是一個函數,內部包裝一個函數,將函數say織入wrapper然后返回,在過程中完成了一些功能。

文件

  • 使用 open() 函數打開文件,兩個參數,第一個是文件路徑,第二個是模式r/w/a(追加)
  • 默認的模式為只讀模式,返回一個文件(class)
  • close():關閉文件
  • ?read():一次性讀取整個文件,read(size) 有一個可選的參數 size,用于指定字符串長度
  • readline() :每次讀取文件的一行
  • ?readlines() :讀取所有行到一個列表中。
  • 使用for...in...循環遍歷文件中的每一行
  • 通過write() 方法寫入文件,參數為內容

異常

使用 try...except 塊來處理任意異常
try:
? ? statements to be inside try clause
? ? ...
except ExceptionName:
? ? statements to evaluated in case of ExceptionName happens
使用 raise 語句拋出一個異常
finally子句必定執行

模塊

一個模塊就是一個.py文件

導入模塊

import xxx

from xxx import yyy,zzz

獲取模塊的名字

可以由全局變量__name__獲取模塊的名字

一個包包含了多個子模塊,在一個目錄下如果含有__init__.py文件,那么該目錄就是一個包,__init__.py中的內容也有一些規則,聲明列表__all__表明只有列表中的內容會被當做模塊。

常用模塊

os

  • os ?模塊提供了與操作系統相關的功能。
  • getuid() ?:返回當前進程的有效用戶 id。
  • getpid() ?:返回當前進程的 id。 g
  • etppid(): 返回父進程的 id。
  • uname() ?:返回識別操作系統的不同信息,在 Linux 中它返回的詳細信息可以從? uname -a 命令得到。 uname() ?返回的對象是一個元組, (sysname, nodename, release, version, machine)
            
              >>> os.uname()
('Linux', 'd80', '2.6.34.7-56.fc13.i686.PAE', '#1 SMP Wed Sep 15 03:27:15 UTC 2010', 'i686')

            
          
  • getcwd() :返回當前工作目錄。
  • chdir(path) :更改當前目錄到 path。
            
              >>> os.getcwd()
'/home'
>>> os.chdir('Code')
>>> os.getcwd()
'/home/Code'

            
          
  • listdir(path):返回路徑中的所有文件和路徑

官網: https://docs.python.org/3/library/os.html

requests

一個第三方http庫,用于進行網絡編程

安裝使用:sudo pip3 install requests

官網: https://2.python-requests.org//zh_CN/latest/


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人免费全部网站 | 欧美精品综合在线 | 免费在线观看www | 色综合久久久 | 亚洲毛片网站 | www.久久久久久久久 | 日本激情视频一区二区三区 | 日一日干一干 | 日本黄页在线观看免费 | 亚洲精品久久久久综合中文字幕 | 亚洲黄色在线网站 | 99热国产精品 | 久久久久久免费一区二区三区 | 国产欧美一区二区三区久久人妖 | 国产三级在线视频播放线 | 蜜桃视频在线播放 | 五月婷婷丁香综合网 | 久久综合婷婷香五月 | 成人两性高清图片视频 | jizz国产精品免费麻豆 | 欧美性生活区 | 国产亚洲精品久久久999无毒 | 精品国产污污免费网站 | 日日操夜夜草 | 国内成人自拍视频 | 日日摸夜夜添夜夜添破第一 | 日本熟妇无码波多野1223 | 日韩亚洲人成网站在线播放 | 欧美在线视频一区二区 | 在线麻豆视频 | 国产精品高清在线观看 | 成人午夜电影在线播放网站 | 5252sese| 色综合在 | 亚洲w码| 久久久久久久成人 | 亚洲国产日韩欧美高清片a 高清视频在线播放 | 亚洲精品在线视频 | 国产精品v欧美精品∨日韩 一级免费黄色免费片 | 欧美一级黄色录相 | 色综合精品久久久久久久 |