亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

作用域

學(xué)過Java 的同學(xué)都知道,Java 的類別裡面可以給方法和屬性定義公共的( public )或者是私有的( private ),這樣做主要是為了我們希望有些函數(shù)和屬性能給別人使用或者只能內(nèi)部使用。透過學(xué)習(xí) Python 中的模組,其實和 Java 中的類別相似,那麼我們怎麼實現(xiàn)在一個模組中,有的函數(shù)和變數(shù)給別人使用,有的函數(shù)和變數(shù)只是在模組內(nèi)部使用呢?

在 Python 中,是透過 _ 前綴來實現(xiàn)的。正常的函數(shù)和變數(shù)名稱是公開的(public),可以被直接引用,例如:abc,ni12,PI等;類似__xxx__這樣的變數(shù)是特殊變量,可以直接引用,但是有特殊用途,例如上面的__name__ 是特殊變量,還有__author__ 也是特殊變量,用來標(biāo)示作者。注意,我們自己的變數(shù)一般不要用這種變數(shù)名;類似_xxx 和__xxx 這樣的函數(shù)或變數(shù)就是非公開的(private),不應(yīng)該直接引用,例如_abc ,__abc 等;

注意,這裡是說不應(yīng)該,而不是不能。因為 Python 種並沒有一種方法可以完全限制存取 private 函數(shù)或變量,但是,從程式設(shè)計習(xí)慣上不應(yīng)該引用 private 函數(shù)或變數(shù)。

例如:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
def _diamond_vip(lv):
    print('尊敬的鉆石會員用戶,您好')
    vip_name = 'DiamondVIP' + str(lv)
    return vip_name
def _gold_vip(lv):
    print('尊敬的黃金會員用戶,您好')
    vip_name = 'GoldVIP' + str(lv)
    return vip_name
def vip_lv_name(lv):
    if lv == 1:
        print(_gold_vip(lv))
    elif lv == 2:
        print(_diamond_vip(lv))
vip_lv_name(2)

輸出的結(jié)果:

尊敬的鉆石會員用戶,您好
DiamondVIP2

在這個模組中,我們公開vip_lv_name 方法函數(shù),而其他內(nèi)部的邏輯分別在_diamond_vip 和_gold_vip private函數(shù)中實現(xiàn),因為是內(nèi)部實作邏輯,呼叫者根本不需要關(guān)心這個函數(shù)方法,它只需關(guān)心呼叫vip_lv_name 的方法函數(shù),所以用private 是非常有用的程式碼封裝和抽象的方法

#一般情況下,外部不需要引用的函數(shù)全部定義成private,只有外部需要引用的函數(shù)才定義為public。

繼續(xù)學(xué)習(xí)