python 变量的命名

机器学习实战中的代码

def plotNode(nodeTxt, centerPt, parentPt, nodeType):
createPlot.ax1.annotate(nodeTxt, xy=parentPt, xycoords='axes fraction',
xytext=centerPt, textcoords='axes fraction',
va="center", ha="center", bbox=nodeType, arrowprops=arrow_args )

def createPlot():
fig = plt.figure(1, facecolor='white')
fig.clf()
createPlot.ax1 = plt.subplot(111, frameon=False) #ticks for demo puropses
plotNode('a decision node', (0.5, 0.1), (0.1, 0.5), decisionNode)
plotNode('a leaf node', (0.8, 0.1), (0.3, 0.8), leafNode)
plt.show()

求问:def的函数内 直接用“函数名.变量名”直接变成全局变量了?如:createPlot.ax1? 是这个意思吗?还是其他意思
因为上面的代码def createPlot():中定义createPlot.ax1
在def plotNode(nodeTxt, centerPt, parentPt, nodeType):中调用也用了createPlot.ax1
而不是createPlot.createPlot.ax1
为啥可以这样?
谢谢啊

Python语言变量命名规则变量名只能包含字母、数字和下划线。
变量名可以字母或下划线开头,但不能以数字开头。
例如,可将变量命名为message_1,但不能将其命名为1_message。变量名不能包含空格,但可使用下划线来分隔其中的单词。
以下示例,变量名greeting_message可行,但变量名greetingmessage会引发错误。
不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。变量名应既简短又具有描述性。慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;
注意:应使用小写的Python变量名。
驼峰命名法当变量名是由二个或多个单词组成时,还可以利用驼峰命名法来命名。
小驼峰式命名法第一个单词以小写字母开始,后续单词的首字母大写。
大驼峰式命名法每一个单词的首字母都采用大写字母。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-01
createPlot.ax1 是表示: ax1 是函数 createPlot 的一个属性,这个可以在函数里面定义也可以在函数定义后加入也可以
example:
def fun():
fun.x =1
当你在python的命令窗口下,运行一次fun()后,x 就是 fun()的一个属性,你在命令窗口下输入
fun.x 后面会显示 1

也可以 在 函数定义完后加入 属性 如 fun.y = 2,在使用 dir(fun),你就会发现fun有 x,y 这两个属性本回答被网友采纳
第2个回答  2014-05-12

不是这样的,是模块名,加变量名,或者是类名加成员变量的名

比如

class People:
    name = "wz"


实例化后,可以用

p = People()
p.name


再比如一个模块

people.py

里面的代码有

name = 'wz'

你在另一个脚本上导入它

import people
people.name

但是函数里的就是不可以这样用,可以百度"自强学堂 在线教程"学习python

追问

people.name 可以这样被调用我明白,我不清楚如果在people内部就取名people.name,那别人调用他岂不是要people.people.name?

追答

如果people.py这个模块内部有一个class是 People
这要看你如何调用了
import people
people.People.name # 一般不这么用
p = people.People() # p是People的一个实例
p.name

from people import People
p = People() # p是People的一个实例
p.name

第3个回答  2015-11-10
python通过函数属性实现全局变量的方法:
In [14]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:def add(x=1):
: try:
: add.sum += x
: except AttributeError:
: add.sum = x
: return add.sum
:print add(3)
:print add(4)
:print add(10)
:--
3
7
17