——这篇文章最主要的目的是将在Python学习中的相关知识要点做下相关记录,方便今后查询以及提醒自己。
版本问题
- 对于Python而言,其语法版本从2.7.X到3.X发生了较大的改变,对于输出等类似问题,一定要区分开来版本,这样进行编译的时候就不会产生用2.7.X的编译器对以3.X的语法书写的代码编译的时候出错了,例如:
@Example
# python - 3.x
# print("\rEpisode {}/{}.".format(i_episode + 1, num_episodes), end="")
# python - 2.7.x
print "\rEpisode {}/{}.".format(i_episode + 1, num_episodes), "\n"
上述的代买就是对于print
在两个版本下的语法规则的一个很好演示。
缩进问题
-
缩进
是整个Python中基本语法的核心点之一,相较于C++、JAVA这类语言的鲜明{}
将整个函数体/循环体/判断体
囊括其中,Python以十分简介的形式将这一点进行了简化,如下所示:
@Example
# 循环体是以首位置的缩进来进行标识的
for x in range(10):
print(x)
下划线 问题
-
Python 用下划线作为变量前缀和后缀指定特殊变量/方法(函数)。
-
其常用形式有以下四种:
-
不带下划线形式的,代表变量/方法是等同于C++/JAVA 中的
public
对象。
例如:
object
、def cal(it)
这样的方式。
+ 以双
下划线开始和结尾的,这种情况比较特殊,常见于Python的内部库/系统使用,我们普通Coder应尽量避免使用这种标识;但是要注意在class
的内部定义__init__(self)
的初始化构造函数的时候是必须要加上双下划线的。
> 例如:
python @example def __init__(self): pass XXXXXXXXXX
+ 以双下划线开始的,这种变量/方法同样是被定义成private
属性的,但要注意的是由于Python中是不存在类似于C++/Java中的protected
表示符的,仅有public
和private
,即变量/方法的标识仅能二选一,但这之中需要注意的是:private
并非如C++/Java中那样绝对不可访问,通过name mangling
(称为“名称改编”(目的就是以防子类意外重写基类的方法或者属性),即前面加上单下划线+双下划线+类名,eg:_Class__object
)机制是仍然可以访问private
对象的,所以在这里一定要区分这种用法。
+ 以单下划线开始的,这种变量/方法即是常用的private
属性标识的,而这种方法也是python中在class
中对于仅可通过内部方法/对象调用的对象/方法的推崇。 -
不带下划线形式的,代表变量/方法是等同于C++/JAVA 中的
-
总结而言:
- 以单下划线开头的
_foo
的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import *
而导入;- 以双下划线开头的
__foo
代表类的私有成员;- 以双下划线开头和结尾的
__foo__
代表python里特殊方法专用的标识,如__init__()
代表类的构造函数。
网友评论