第3节:编程注释、导入模块
1、什么是注释
注释例子:
‘Hello World!’
"who are you"
''' Hello,my name's strom,This is the first time to be here.'''
这三个有什么区别呢?
1)python的单行注释是使用:“#”
2)python的多行注释是使用:“ ‘’‘ ”
3)python的多行注释也可以使用:“ “”“ ”
上面的例子中的 单引号和双引号有区别吗?其实没有很大区别的,意思一样的,单引号区别在如果注释中再次出现了单引号的情况必须使用双引号注释。
2、模块如何使用
在python中你要导入一个模块,该怎么做呢?
如果你有一个程序,你要把它变成一个软件,你不可能把所有的功能写到一个文件里,如果你写到一个文件里,这种情况是变态的情况,正常人不会怎么干的。因为要有可读性,和可扩展性,要把一些功能独立出来,单独写到一个文件里。然后其他的程序用它的时候就调用一下就可以了(导入一下,这就是模块),跟搭积木一样,一个个串在一起就把程序做出来了。python中每一个程序都可以称它为模块,为什么呢?因为它们都可以被导入。
导入模块的命令是:
import
这个命令代表是,模块里的所有的功能都被调用。
我们使用import导入和linux系统交互的模块如下:
import os
os.system('df')
Filesystem 1K-blocks Used Available Use% Mounted on
udev 982804 0 982804 0% /dev
tmpfs 201812 6348 195464 4% /run
/dev/sda1 204229432 4623372 189208776 3% /
tmpfs 1009044 216 1008828 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 1009044 0 1009044 0% /sys/fs/cgroup
tmpfs 201812 60 201752 1% /run/user/1000
/dev/sr0 1550400 1550400 0 100% /media/strom/Ubuntu 16.04.3 LTS amd64
df命令是查看硬盘使用量的,导入模块后模块中的所有东西都可以使用的。
import os
os.mkdir('/tmp/text.log')
os.system('ls /tmp')
以上举得例子是系统交互的,真正系统交互的命令有很多,这里只是简单列举一下。
from sys import argv
这句指令的意思是说在某个模块里只导入某个方法。
import multiprocessing as mul
这句指令是将multiprocessing模块设置一个比较短的别名,这样在用别名调用比较方便。
例子:
>>> import multiprocessing as mul
>>> mul.os
<module 'os' from '/usr/lib/python2.7/os.pyc'>
import SocketServer import Socket,threading
这句指令是将SocketServer模块中的Socket和threading函数进行导入。
import sys,os,tab,urllib
这句指令是将sys,os,tab,urllib进行导入。
注意:以上说的是导入模块的几种方式。
python自带的库有几百个,还有在官网上收入的第三方库有好几上千个。(第三方库基本上是个人开发的),所以你不可能可以记住所有的。但是这些标准库加上这些第三方的库可以实现你所有的功能。比如:你要开发一个爬虫的程序,只要调用一下模块稍微一下加工就能实现了,你的爬虫就写完了,那我想做一个SocketServer,你只要导入这个SocketServer模块就可以了,等等的模块都有。你可以到网上搜一个python标准库的列表,里面都有写每个库都是做什么的,后面会讲到怎么自己写一个模块。
>>> import annotation_python
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named annotation_python
为什么会报这个错误,因为如下路径中没有这个某块:
>>> import sys
>>> sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
它是按照这样的方式去寻址找你的模块。如果想要我的模块在程序的任何地方都可以导入,就将这个py文件放到以上的某个路径中去。
如何在python下敲的命令补全使用tab.py脚本代码如下:
1)创建tab.py脚本到 /usr/lib/python2.7下
strom@strom-virtual-machine:~/Desktop/Learn_python$ cat /usr/lib/python2.7/tab.py
#!/usr/bin/python
#python tab file
import sys
import readline
import rlcompleter
import atexit
import os
#tab completion
readline.parse_and_bind('tab: complete')
#history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter
2)设置可执行权限
strom@strom-virtual-machine:~/Desktop/Learn_python$ sudo chmod +x /usr/lib/python2.7/tab.py
3)测试是否成功
Python 2.7.12 (default, Nov 20 2017, 18:23:56)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tab
>>> import sys
>>> sys.
sys.__class__( sys.__sizeof__( sys.copyright sys.getfilesystemencoding( sys.prefix
sys.__delattr__( sys.__stderr__ sys.displayhook( sys.getprofile( sys.ps1
sys.__dict__ sys.__stdin__ sys.dont_write_bytecode sys.getrecursionlimit( sys.ps2
sys.__displayhook__( sys.__stdout__ sys.exc_clear( sys.getrefcount( sys.py3kwarning
sys.__doc__ sys.__str__( sys.exc_info( sys.getsizeof( sys.pydebug
sys.__excepthook__( sys.__subclasshook__( sys.exc_type sys.gettrace( sys.setcheckinterval(
sys.__format__( sys._clear_type_cache( sys.excepthook( sys.hexversion sys.setdlopenflags(
sys.__getattribute__( sys._current_frames( sys.exec_prefix sys.long_info sys.setprofile(
sys.__hash__( sys._getframe( sys.executable sys.maxint sys.setrecursionlimit(
sys.__init__( sys._mercurial sys.exit( sys.maxsize sys.settrace(
sys.__name__ sys._multiarch sys.exitfunc( sys.maxunicode sys.stderr
sys.__new__( sys.api_version sys.flags sys.meta_path sys.stdin
sys.__package__ sys.argv sys.float_info sys.modules sys.stdout
sys.__reduce__( sys.builtin_module_names sys.float_repr_style sys.path sys.subversion
sys.__reduce_ex__( sys.byteorder sys.getcheckinterval( sys.path_hooks sys.version
sys.__repr__( sys.call_tracing( sys.getdefaultencoding( sys.path_importer_cache sys.version_info
注意:import tab 模块必须加入,不然你tab键补不齐。
1、什么是注释
注释例子:
‘Hello World!’
"who are you"
''' Hello,my name's strom,This is the first time to be here.'''
这三个有什么区别呢?
1)python的单行注释是使用:“#”
2)python的多行注释是使用:“ ‘’‘ ”
3)python的多行注释也可以使用:“ “”“ ”
上面的例子中的 单引号和双引号有区别吗?其实没有很大区别的,意思一样的,单引号区别在如果注释中再次出现了单引号的情况必须使用双引号注释。
2、模块如何使用
在python中你要导入一个模块,该怎么做呢?
如果你有一个程序,你要把它变成一个软件,你不可能把所有的功能写到一个文件里,如果你写到一个文件里,这种情况是变态的情况,正常人不会怎么干的。因为要有可读性,和可扩展性,要把一些功能独立出来,单独写到一个文件里。然后其他的程序用它的时候就调用一下就可以了(导入一下,这就是模块),跟搭积木一样,一个个串在一起就把程序做出来了。python中每一个程序都可以称它为模块,为什么呢?因为它们都可以被导入。
导入模块的命令是:
import
这个命令代表是,模块里的所有的功能都被调用。
我们使用import导入和linux系统交互的模块如下:
import os
os.system('df')
Filesystem 1K-blocks Used Available Use% Mounted on
udev 982804 0 982804 0% /dev
tmpfs 201812 6348 195464 4% /run
/dev/sda1 204229432 4623372 189208776 3% /
tmpfs 1009044 216 1008828 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 1009044 0 1009044 0% /sys/fs/cgroup
tmpfs 201812 60 201752 1% /run/user/1000
/dev/sr0 1550400 1550400 0 100% /media/strom/Ubuntu 16.04.3 LTS amd64
df命令是查看硬盘使用量的,导入模块后模块中的所有东西都可以使用的。
import os
os.mkdir('/tmp/text.log')
os.system('ls /tmp')
以上举得例子是系统交互的,真正系统交互的命令有很多,这里只是简单列举一下。
from sys import argv
这句指令的意思是说在某个模块里只导入某个方法。
import multiprocessing as mul
这句指令是将multiprocessing模块设置一个比较短的别名,这样在用别名调用比较方便。
例子:
>>> import multiprocessing as mul
>>> mul.os
<module 'os' from '/usr/lib/python2.7/os.pyc'>
import SocketServer import Socket,threading
这句指令是将SocketServer模块中的Socket和threading函数进行导入。
import sys,os,tab,urllib
这句指令是将sys,os,tab,urllib进行导入。
注意:以上说的是导入模块的几种方式。
python自带的库有几百个,还有在官网上收入的第三方库有好几上千个。(第三方库基本上是个人开发的),所以你不可能可以记住所有的。但是这些标准库加上这些第三方的库可以实现你所有的功能。比如:你要开发一个爬虫的程序,只要调用一下模块稍微一下加工就能实现了,你的爬虫就写完了,那我想做一个SocketServer,你只要导入这个SocketServer模块就可以了,等等的模块都有。你可以到网上搜一个python标准库的列表,里面都有写每个库都是做什么的,后面会讲到怎么自己写一个模块。
>>> import annotation_python
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named annotation_python
为什么会报这个错误,因为如下路径中没有这个某块:
>>> import sys
>>> sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
它是按照这样的方式去寻址找你的模块。如果想要我的模块在程序的任何地方都可以导入,就将这个py文件放到以上的某个路径中去。
如何在python下敲的命令补全使用tab.py脚本代码如下:
1)创建tab.py脚本到 /usr/lib/python2.7下
strom@strom-virtual-machine:~/Desktop/Learn_python$ cat /usr/lib/python2.7/tab.py
#!/usr/bin/python
#python tab file
import sys
import readline
import rlcompleter
import atexit
import os
#tab completion
readline.parse_and_bind('tab: complete')
#history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter
2)设置可执行权限
strom@strom-virtual-machine:~/Desktop/Learn_python$ sudo chmod +x /usr/lib/python2.7/tab.py
3)测试是否成功
Python 2.7.12 (default, Nov 20 2017, 18:23:56)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tab
>>> import sys
>>> sys.
sys.__class__( sys.__sizeof__( sys.copyright sys.getfilesystemencoding( sys.prefix
sys.__delattr__( sys.__stderr__ sys.displayhook( sys.getprofile( sys.ps1
sys.__dict__ sys.__stdin__ sys.dont_write_bytecode sys.getrecursionlimit( sys.ps2
sys.__displayhook__( sys.__stdout__ sys.exc_clear( sys.getrefcount( sys.py3kwarning
sys.__doc__ sys.__str__( sys.exc_info( sys.getsizeof( sys.pydebug
sys.__excepthook__( sys.__subclasshook__( sys.exc_type sys.gettrace( sys.setcheckinterval(
sys.__format__( sys._clear_type_cache( sys.excepthook( sys.hexversion sys.setdlopenflags(
sys.__getattribute__( sys._current_frames( sys.exec_prefix sys.long_info sys.setprofile(
sys.__hash__( sys._getframe( sys.executable sys.maxint sys.setrecursionlimit(
sys.__init__( sys._mercurial sys.exit( sys.maxsize sys.settrace(
sys.__name__ sys._multiarch sys.exitfunc( sys.maxunicode sys.stderr
sys.__new__( sys.api_version sys.flags sys.meta_path sys.stdin
sys.__package__ sys.argv sys.float_info sys.modules sys.stdout
sys.__reduce__( sys.builtin_module_names sys.float_repr_style sys.path sys.subversion
sys.__reduce_ex__( sys.byteorder sys.getcheckinterval( sys.path_hooks sys.version
sys.__repr__( sys.call_tracing( sys.getdefaultencoding( sys.path_importer_cache sys.version_info
注意:import tab 模块必须加入,不然你tab键补不齐。