中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

有哪些Python基礎知識

發布時間:2021-10-28 13:34:50 來源:億速云 閱讀:128 作者:iii 欄目:開發技術

這篇文章主要介紹“有哪些Python基礎知識”,在日常操作中,相信很多人在有哪些Python基礎知識問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”有哪些Python基礎知識”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    1、Function 函數

    編程中,需要重復寫的功能,可以包裝成一個函數

    1)定義函數

    定義函數之前,實現給一個字符串增加前綴和后綴的操作:

    f1 = "f1"
    f2 = "f2"
    f1 += ".txt"
    f1 = "my_" + f1
    f2 += ".txt"
    f2 = "my_" + f2
    print(f1, f2)
    my_f1.txt my_f2.txt

    定義函數之后:

    def modify_name(filename):
        filename += ".txt"
        filename = "my_" + filename
        print(filename)
    modify_name("f1")
    modify_name("f2")
    my_f1.txt
    my_f2.txt

    上述函數里面用到了參數,調用的時候需要進進行傳參數,但有時也可以沒有參數,eg:

    def modify_name():
        filename = "f1"
        filename += ".txt"
        filename = "my_" + filename
        print(filename)
    modify_name()
    my_f1.txt

    一個函數也可以擁有返回值,將函數處理后,可以將想要返回的結果返回

    def modify_name(filename):
        filename += ".txt"
        filename = "my_" + filename
        return filename
    new_filename = modify_name("f1")
    print(new_filename)
    my_f1.txt

    2)參數設置

    調用函數時,如果函數有參數,那么需要給函數傳參,函數本來的參數叫實參,傳入的參數叫實參,參數傳遞有以下幾種方式:

    def f(x, a, b, c):
        return a*x**2 + b*x + c*1
    
    print(f(2, 1, 1, 0))    # 忽略參數名,需要按順序一一對應
    print(f(x=2, a=1, b=1, c=0))    # 寫上參數名,按名字傳參
    print(f(a=1, c=0, x=2, b=1))    # 若用參數名,可以打亂順序傳參
    6
    6
    6

    另外,對于不是一直變化的參數,可以給參數設置一個默認值,如果設置了默認值,傳參時可以不給改參數傳值,否則每個參數都要傳參成功才能調用

    def f(x, a=1, b=1, c=0):
        return a*x**2 + b*x + c*1
    
    print(f(2, a=2))
    print(f(2))
    10
    6

    Tip: 設置了默認值的參數和未設置默認值的參數要分開放,也就是說不可以將未設置默認值的參數跟在設置了默認值參數的后面

    3)全局和局部變量

    • 全局變量(global):函數里外都能用(公用)

    • 局部變量(local):僅在函數內使用(私用)

    def modify_name():
        filename = "f1.txt"	# 這里就是一個局部變量
        print("local filename:", filename)
    modify_name()
    print("global filename:", filename) # 這里會報錯
    filename = "f1.txt"	# 這里便是一個全局變量
    def modify_name():
        print("local filename:", filename)
    modify_name()
    print("global filename:", filename)
    • 全局變量和局部變量沖突時,局部變量優先!!!

    filename = "f1.txt"
    def modify_name():
        filename = "f2.txt"
        print("local filename:", filename)
    modify_name()
    print("global filename:", filename)
    local filename: f2.txt
    global filename: f1.txt
    • 特殊情況:允許內部來修改外部的值,必須使用global聲明,相當于提出了一個申請

    filename = "f1.txt"
    
    def modify_name():
        global filename  # 提出申請
        filename = "f2.txt"
        print("local filename:", filename)
    
    modify_name()
    print("global filename:", filename)
    local filename: f2.txt
    global filename: f2.txt

    2、Class類

    目的:為了描述一個或一類具體的物體,eg:貓的特征,動作等

    1)定義class

    使用class File來創建一個類,注意通常約定類的名字要首字母大寫。

    然后使用my_file = File()來創建一個實例,每個實例都繼承了一個類的基本屬性

    class File:
        def __init__(self):
            self.name = "f1"
            self.create_time = "today"
    
    my_file = File()
    print(my_file.name)
    print(my_file.create_time)
    f1
    today
    • 其中 self 是作為類自己的一個索引,不管你在定義類的時候,想要獲取這個類的什么屬性或功能,都可以通過self來獲取。

    • __init__():創建一個實例的時候,類都會自動進行一次初始化,即運行一遍__init__()函數

    • 修改屬性的值:(但這樣修改的值,僅對當前實例有效)

    my_file.name = "new_name"
    print(my_file.name)
    new_name

    2)class的功能

    • __init__():也可以對該函數進行傳參:

    class File:
        def __init__(self, name, create_time="today"):
            self.name = name
            self.create_time = create_time
    
    my_file = File("my_file")
    print(my_file.name)
    print(my_file.create_time)
    my_file
    today
    • 還可以定義更多的功能,比如重命名等

    class File:
        def __init__(self, name, create_time="today"):
            self.name = name
            self.create_time = create_time
        def change_name(self, new_name):
            self.name = new_name
    
    my_file = File("my_file")
    my_file.change_name("new_name")
    print(my_file.name)
    new_name
    • 而且類的功能也可以有返回值

    class File:
        def __init__(self, name, create_time="today"):
            self.name = name
            self.create_time = create_time
        def get_info(self):
            return self.name + " is created at " + self.create_time
    
    my_file = File("my_file")
    print(my_file.get_info())
    my_file is created at today

    3)繼承

    • 倆個類分開寫,eg:

    class Video:
        def __init__(self, name, window_size=(1080, 720)):
            self.name = name
            self.window_size = window_size
            self.create_time = "today"
            
    class Text:
        def __init__(self, name, language="zh-cn"):
            self.name = name
            self.language = language
            self.create_time = "today"

    可以發現,這倆個類是有共性的,比如都有name,和create_time

    所以,可以編寫一個底層類,使得這倆個類繼承底層類,從而減少了類之間的共有屬性/功能的重復開發!!!

    一個類可以繼承另一個類,從而使得這個類成為子類,被繼承的類為父類

    子類可以繼承父類的功能/功能,而且子類還可以重定義父類的功能

    class File:
        def __init__(self, name, create_time="today"):
            self.name = name
            self.create_time = create_time
        def get_info(self):
            return self.name + " is created at " + self.create_time
    
    class Video(File):
        def __init__(self, name, window_size=(1080, 720)):
            # 將共有屬性的設置導入File父類
            super().__init__(name=name, create_time="today")
            self.window_size = window_size
    
    class Text(File):
        def __init__(self, name, language="zh-cn"):
            super().__init__(name=name, create_time="today")
            self.language = language
        # 也可以在子類中復用父類功能
        def get_more_info(self):
            return self.get_info() + ", using language of " + self.language
    
    v = Video("my_video")
    t = Text("my_text")
    print(v.get_info())  # 調用父類功能
    print(t.create_time)  # 調用父類的屬性
    print(t.language)  # 調用自己的屬性
    print(t.get_more_info())  # 調用自己復用父類的功能
    my_video is created at today
    today
    zh-cn
    my_text is created at today, using language of zh-cn

    4)私有屬性和功能

    • 私有:_一個下劃線開頭,弱隱藏,不想讓別人用,但別人在必要情況下還是可以用的

    • 私有:__倆個下劃線開頭,強隱藏,不讓別人使用

    class File:
        def __init__(self):
            self.name = "f1"
            self.__deleted = False  # 不讓別人使用這個變量
            self._type = "txt"  # 不想別人使用這個變量
        def delete(self):
            self.__force_delete()
        def __force_delete(self):   # 不讓別人使用這個功能
            self.__deleted = True
            return True
        def _soft_delete(self):  # 不想讓別人使用這個功能
            self.__force_delete()  # 雖然是強隱藏,但是可以在內部隨便調用
            return True
    
    f = File()
    print(f._type)  # 可以拿到值,但是會有??
    print(f._soft_delete())  # 可以調用,但是會有??
    print(f.__deleted)  # 會直接報錯
    print(f.__force_delete)  # 會直接報錯

    5)特殊方法

    定義含義
    def __init__()初始化實例
    def __repr__()字符串的“官方”表現形式
    def __str__()字符串的“非正式”值
    def __iter__()遍歷某個序列
    def __next__()從迭代器中獲取下一個值

    3、Module模塊

    Moudel主要是為一個相對比較大的工程,涉及到多個文件之間的互相調用關系。

    • 對于一個項目來說,它需要去實現很多功能,這時候,如果可以把某一個或者某一類功能分類寫到了一個文件之中,在合并的時候,我不便不需要知道文件中的代碼具體什么,我只需要調用你給的這個文件中的功能就可以!也

    • 就是說,作為你所給文件中的功能的使用者,我不關心你實現功能的代碼,我只關系我可以使用函數調用到你這個功能就好

    # file.py
    def create_name():
      return "new_file.txt"

    eg: 比如上述file.py文件,實現了create_name的功能,然而作為這個功能的使用者,我不需要去了解這個功能所使用的代碼,我只關心如何調用使用這個功能

    1)引用module

    比如新建了一個me.py,需要在這個文件之中引用file.py中的create_name()的功能

    # me.py
    import file
    print(file.create_name())
    new_file.txt

    或者也可以這樣調用

    # me.py
    import file as f1
    print("f1:", f1.create_name())
    class File:
      def create_name(self):
        return "new_file.txt"
    f2 = File()
    print("f2:", f2.create_name())
    f1: new_file.txt
    f2: new_file.txt

    可以發現,這和類功能調用有著非常大的相似之處!!!

    還有更多的引用方式:

    # me.py
    from file import create_name
    print(create_name())
    new_file.txt

    假設file.py中還有一個函數create_time()

    # me.py
    from file import create_name, create_time
    print(create_name())
    print(create_time())
    new_file.txt
    today

    如何file.py中函數太多,記不清,那么可以如此引用:

    # me.py
    # 第一種
    import file
    print("1", file.create_name())
    #第二種
    from file import *
    print("2", create_name())
    print("2", create_time())

    2)大項目的模塊管理

    在正規的module中,我們常會看到一個__init__.py文件,就像class里的def __init__(self),可以在里面寫上如何初始化你的files目錄,也可以設定目錄中各元素的關系。

    有哪些Python基礎知識

    # files/__init__.py
    from .video import get_video_size

    設置好__init__.py后,就可以直接從files里import get_video_size這個屬于video.py的功能了

    # me.py
    from files import get_video_size
    print(get_video_size())

    但和video.py同級的text.py就無法通過import方式獲取到text.py中的功能,因為未在files/__init__.py中聲明

    # me.py
    from files import create_name

    如果不在files/__init__.py中聲明,但還想調用,則可以使用:

    # me.py
    import files.text
    print(files.text.create_name)
    # 或者
    from files import text
    print(text.create_name)

    到此,關于“有哪些Python基礎知識”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    山阴县| 达日县| 本溪市| 秦皇岛市| 夏津县| 富裕县| 宜兰市| 隆子县| 长兴县| 墨竹工卡县| 阿拉善右旗| 连江县| 眉山市| 城固县| 隆尧县| 怀化市| 宽城| 盘锦市| 连云港市| 都匀市| 湟源县| 凉山| 乌拉特前旗| 宜宾市| 千阳县| 米泉市| 宝鸡市| 平武县| 内黄县| 淳安县| 伊宁县| 万宁市| 延寿县| 呈贡县| 宁化县| 乳源| 六盘水市| 南丰县| 瓮安县| 广灵县| 泉州市|