Python基本特性
1、基本特性
Python是一门解释型语言,大小写敏感。采用缩进的格式。
# 括号中是提示信息
n = input("请输入您的姓名")
print ('my name is :',n)
输出内容之间可以使用逗号分隔,可打印出一个空格。
if age >= 18 :
print ('adult')
else :
print('teenager')
Python的字符和字符串都用单引号(但也可以用双引号)。
Python中没有++和–,需要自增和自减可以使用如下的方式:
a = a-1
a -= a
如果在Python代码中看到 --a,或者++a,并不代表自增或自减,这个只是正负号。
--a = ++a = a
2、类方法
Python的类方法中一定要写一个self参数,原因如下。
self是类方法的一个占位参数,它就是类的实例对象自己,当实例调用方法时:
instance = X()
instance.f('a', 'b')
上面的语句等同于:
X.f(instance, 'a', 'b')
# 或
X.f(self, 'a', 'b')
第一个参数是实例自己。
3、装饰器
函数对象有一个__name__属性,可以拿到函数的名字:
>>> now.__name__
'now'
>>> f.__name__
'now'
在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。我们要定义一个能打印日志的decorator,可以定义如下:
def log(func):
def wrapper(*args, **kw):
print('call %s():' % func.__name__) # %s是一个格式符,表示输出一个字符串
return func(*args, **kw)
return wrapper
我们借助Python的@语法,把decorator置于函数的定义处:
@log
def now():
print('2015-3-25')
调用now()函数,不仅会运行now()函数本身,还会在运行now()函数前打印一行日志:
>>> now()
call now():
2015-3-25
把@log放到now()函数的定义处,相当于执行了语句:
now = log(now)
4、偏函数
int()函数不仅可以把字符串转化为十进制数,它还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换:
>>> int('12345', base=8)
5349
>>> int('12345', 16)
74565
假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去:
def int2(x, base=2):
return int(x, base)
这样,我们转换二进制就非常方便了:
>>> int2('1000000')
64
>>> int2('1010101')
85
5、作用域
在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。
正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等;
类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;
类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;
之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。
下一篇:Django测试开发(2)列表list、元组tuple、字典dict
软件测试工程师一只,也在不断的学习阶段,平时的小经验不定期分享。
博主经验有限,若有不足,欢迎交流,共同改进~
有意可加Q群 908417285 交流学习。
乾坤未定,你我皆是黑马