Python入门学习
基本语法
注释
多行注释可以用多个 # 号,还有 ''' 和 """:
Print 输出
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。
行与缩进
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
if __name__ == "__main__": {
main()
}
等价于:
if __name__ == "__main__":
main()
from 和 from ... import
在 python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule,而import 包名,也可以理解成将包下的--__init__.py
这个模块全部导入。
从某个模块中导入某个函数,格式为: from somemodule import somefunction
from package import somemodule:理解为,从某个包导入某个模块
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
类
类名用骆驼式风格:

方法名用小写:

return
函数、方法后面return不能想scala那样省略。
return "我想吃饭"
方法
==类的方法与普通的函数只有一个特别的区别==——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。(self代表类的实例,而非类)
class Test:
def prt(self):
print(self)
print(self.__class__)
t = Test()
t.prt()
以上实例执行结果为:
<__main__.Test instance at 0x100771878>
__main__.Test
从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。
self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的:
class Test:
def prt(runoob):
print(runoob)
print(runoob.__class__)
t = Test()
t.prt()
以上实例执行结果为:
<__main__.Test instance at 0x100771878>
__main__.Test
类变量和实例变量
'''
类变量通常不作为实例变量使用。因为,Python的类变量,并不像java的静态变量。
通过对象去更改类变量,并不会更改类变量原先的值。此时的类变量已经变成实例变量。
所以,我们操作类变量,用类去操作,而非对象去操作。除非,你知道你要做什么。
https://www.jianshu.com/p/86f27ceadfeb
'''

模块、包、库的区别
模块
模块:一个.py
文件,就称为一个模块。里面定义了一些函数和变量,需要的时候就可以导入这些模块。
包
包是在模块之上的概念,为了方便管理而将文件进行分包。
而包下,有一个__init__.py
文件,用于区别一般目录。
可以把包看成一个模块,这个模块对应的.py
文件,就是包下的__init__.py
。即:__init__.py
本身就是一个模块,而它的模块名就是包名==(包名也是模块名)==。
import urllib 只是导入了urrlib包下的__init__.py模块(__init__.py模块名为包名:urllib。)
import urllib模块后,还是无法使用urllib包下的request模块,这是因为只导入了__init__.py
这个文件(模块)。所以想使用urllib包下的request模块需要使用:
import urllib.request (这个的话,每次都必须使用urllib.request作为模块名)
或者
from urllib import request (可以使用request作为模块名,省略urllib)

可以往包下的__init__.py
写内容


库
具有相关功能模块的集合。这也是Python的一大特色之一,即具有强大的标准库、第三方库以及自定义模块。只不过,Python中,很少说library,正常的话,都是说module。
- 标准库:就是下载安装的python里那些自带的模块,要注意的是,里面有一些模块是看不到的比如像sys模块,这与linux下的cd命令看不到是一样的情况。
- 第三方库:就是由其他的第三方机构,发布的具有特定功能的模块。
- 自定义模块:用户自己可以自行编写模块,然后使用。
这模块、包、库三个概念实际上都是模块,只不过是个体和集合的区别。
部分参考: