** 全局变量定义 **
globvar = 0
def set_globvar_to_one():
global globvar # Needed to modify global copy of globvar
globvar = 1
def print_globvar():
print(globvar) # No need for global declaration to read value of globvar
set_globvar_to_one()
print_globvar() # Prints 1
** python unit test **
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from . import Cat
class TestSequenceFunctions(unittest.TestCase):
def test_choice(self):
self.assertEqual('running', Cat().run())
if __name__ == '__main__':
unittest.main()
** main函数 **
if __name__ == '__main__':
print 'aaa'
** 文章字符串注释 **
"""
三重双引号
"""
应该避免的名称
- 单字符名称, 除了计数器和迭代器.
- 包/模块名中的连字符(-)
- 双下划线开头并结尾的名称(Python保留, 例如__init__)
命名约定
- 所谓”内部(Internal)”表示仅模块内可用, 或者, 在类内是保护或私有的.
- 用单下划线(_)开头表示模块变量或函数是protected的(使用import * from时不会包含).
- 用双下划线(__)开头的实例变量或方法表示类内私有.
- 将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块.
- 对类名使用大写字母开头的单词(如CapWords, 即Pascal风格), 但是模块名应该用小写加下划线的方式(如lower_with_under.py). 尽管已经有很多现存的模块使用类似于CapWords.py这样的命名, 但现在已经不鼓励这样做, 因为如果模块名碰巧和类名一致, 这会让人困扰.
导入总应该放在文件顶部, 位于模块注释和文档字符串之后, 模块全局变量和常量之前. 导入应该按照从最通用到最不通用的顺序分组:
- 标准库导入
- 第三方库导入
- 应用程序指定导入
每种分组中, 应该根据每个模块的完整包路径按字典序排序, 忽略大小写.
import foo
from foo import bar
from foo.bar import baz
from foo.bar import Quux
from Foob import ar
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'Python中对类的命名使用驼峰命名法,对其他类型则是下划线进行分割'
class ClassStudent(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
def print_score(self):
print 'name : %s score : %s' % (self.__name, self.__score)
def get_score(self):
print self.__score
li = ClassStudent('li', 33)
# li.__score 报错
# li._ClassStudent__score 不建议使用,python没有强制的权限控制,需要靠自己自觉
li.get_score()
li.print_score()