A. python中全局變數和局部變數
大家都可以用的變數就是全局,相當於公共汽車。或者路邊垃圾桶。函數內部定義變數,就像你家的電瓶車,你自己家用,別人用不了,除非聲明全局。話說像go裡面這種函數內部聲明的方法就挺不錯 " := "
B. python中如何定義變數
Python 中的變數賦值不需要類型聲明。這一點不想其他java,C,C++語言。
counter = 100 # 賦值整型變數
miles = 1000.0 # 浮點型
name = "John" # 字元串
print counter
print miles
print name
************************
執行以上程序會輸出如下結果:
100
1000.0
John
C. python的公共變數如何管理
全局變數管理模塊
首先定義一個全局變數管理模塊
# common/gloabalvar.py
# -*- coding:utf-8 -*-
"""
global var mole
"""
def _init():
global _global_dict
_global_dict = {}
def set_value(name, value):
"""定義一個全局變數"""
_global_dict[name] = value
def get_value(name, defValue=None):
"""獲取一個全局變數值,不能存在則返回默認值"""
try:
return _global_dict[name]
except KeyError:
return defValue
二、初始化及定義(設置)全局變數
# main.py
import app.common.globalvar as globalvar
if __name__ == "__main__":
# init global var
globalvar._init()
globalvar.set_value('itsm_deadline', SettingConfig.ITSM_DAILY_DEADLINE)
globalvar.set_value('email_subject', SettingConfig.EMAIL_SUBJECT)
globalvar.set_value('email_recipients', SettingConfig.EMAIL_RECIPIENTS)
globalvar.set_value('auto_submit_status', SettingConfig.AUTO_SUBMIT_STATUS)
1
2
3
4
5
6
7
8
9
10
11
三、獲取全局變數
# business.py
import app.common.globalvar as globalvar
status = globalvar.get_value('auto_submit_status')
附加:API管理全局變數,都是基於上述三點完成
對於flask-restful的web應用則可以通過API介面查看全局變數的值以及通過API介面設置和管理它們
# app/api/v1/test/test.py
from flask_restplus import Resource
import app.common.globalvar as globalvar
from .marshal_model import admin_api_ns as api
@api.route('/')
class GlobalVar(Resource):
"""全局變數管理API"""
@api.doc('Get all the global var')
@api.response(HTTP_GET_SUCCESS, 'query success')
def get(self):
"""查詢所有的全局變數"""
glist = globalvar._global_dict
return glist, HTTP_GET_SUCCESS
@api.route('/auto')
class AutoSubmit(Resource):
"""查看及修改自動狀態的API"""
@api.doc('check auto submit status')
@api.marshal_with(set_autosubmit)
@api.response(HTTP_GET_SUCCESS, 'query success')
def get(self):
"""測試查看自動狀態開關狀態"""
status = globalvar.get_value('auto_submit_status')
# status = query_autojob_status()
return {'status': status}, HTTP_GET_SUCCESS
@login_required
@admin_required
@api.doc('set auto submit the planlist everyday')
@api.expect(set_autosubmit)
def post(self):
"""設置每天定時自動開關"""
data = request.json
status = data.get('status')
globalvar.set_value('auto_submit_status', status)
# resp, returncode = update_autojob_status(status)
return {'message': 'success'}, HTTP_POST_SUCCESS
D. python類的全局變數
全局變數,是一個相對的概念,對於整個程序而言,有可以在整個程序的任何代碼塊中都能被訪問的變數,被稱作全局變數。也有在類中能夠被該類的任何代碼塊都能訪問到的變數,也被稱作全局變數。所以這里是一個相對的概念。代碼定義的fly變數以及構造方法中的long變數都是全局變數,因為在long之前加了一個self的前綴,所有在整個類中,該long變數也是全局變數,至少在該類中的任何地方都可以訪問到該變數。全局變數被當做類的一個屬性來存儲,所以可以說直接通過.的訪問方式直接訪問,訪問如下:
class G():
fly = False #類中的全局變數
def __init__(self):
selg._age = 1 #加一個下劃線,是一種不成文的規定,意思是該變數是私有變數
self.long = 2 #普通變數
self.__width = 3 #有兩個下劃線,是一種「真」私有變數
def run(self):
r = 4 #局部變數
print("I am running!.")
E. python中如何定義變數
Python 中的變數賦值不需要類型聲明,這一點和其他java,c,c++語言都不相同。
counter = 100 # 賦值整型變數
miles = 1000.0 # 浮點型
name = "John" # 字元串
print counter
print miles
print name
----------------------
執行以上程序會輸出如下結果:
100
1000.0
John
F. python 如何定義全局變數
接下來,我們把值2賦給x。x是函數的局部變數。所以,當我們在函數內改變x的值的時候,在主塊中定義的x不受影響。在最後一個print語句中,我們證明了主塊中的x的值確實沒有受到影響。
使用global語句
如果你想要為一個定義在函數外的變數賦值,那麼你就得告訴python這個變數名不是局部的,而是
全局
的。我們使用global語句完成這一功能。沒有global語句,是不可能為定義在函數外的變數賦值的。
你可以使用定義在函數外的變數的值(假設在函數內沒有同名的變數)。然而,我並不鼓勵你這樣做,並且你應該盡量避免這樣做,因為這使得程序的讀者會不清楚這個變數是在哪裡定義的。使用global語句可以清楚地表明python函數變數是在外面的塊定義的。
G. Python函數及變數的定義和使用
def <函數名>():
<函數體>
return <返回值>
def <函數名>(非可選參數,可選參數):
<函數體>
return <返回值>
def <函數名>(參數,*b):
<函數體>
return <返回值>
<函數名> = lambda <參數> : <表達式>
例1:f = lambda x , y : x + y
調用:f(6 + 8) 輸出:14
例2: f = lambda : "沒有參數的lambda函數!"
調用: print(f()) 輸出: 沒有參數的lambda函數!