模块相关基础
1.1模块的格式:
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
'这是一个注释'
__author__='lnssm'
import sys
def test():
args=sys.argv
if len(args)==1:
print('hello world')
elif len(args)==2:
print('hello %s'%args[1])
else:
print('to many argument!')
if __name__='__main__':
test()
解释:
-
第一行和第二行是标准注释,第一行注释可以让这个文件直接在
unix/linux/mac
上运行,第二行是说明使用utf-8编码 -
第三行是一个字符串,表示模块的注释,任何模块代码的第一个字符串出现都被当作是模块的文档注释
-
第4行使用
__author__
变量,把作者写进去,注意这是两个划线 -
第5行是引入模块,导入
sys
模块后,我们就有了变量sys
指向该模块,利用sys
这个变量,就可以访问sys
模块的所有功能。sys
模块有一个argv
变量,用list存储了命令行的所有参数。argv
至少有一个元素,因为第一个参数永远是该.py文件的名称,例如:运行
python3 hello.py
获得的sys.argv
就是['hello.py']
;运行
python3 hello.py Michael
获得的sys.argv
就是['hello.py', 'Michael]
。 -
第6行是真正的写的功能
注意下
if __name__='__main__': test()
虽然php没有相应的入口函数,但是像
c
,java
,go
等都有入口函数main,你就可以把它作为是,就行了,引申一下就是,就我们在命令行执行这个模块文件时,python解释器把一个特殊变量__name__
置为__main__
1.2 作用域
在一个模块中,我们可以定义多个变量与函数,但有些函数或变量,只是为这个模块自己使用的,不想让别的模块调用,这个时候作用域就出现了
格式:使用_变量
或者__函数
来表示,相当于一个private函数或者变量了,但是在python中,没有绝对的private变量,也就是说你用了也不会有什么错,只是我们不用罢了
def _private_1(name):
return 'hello %s'%name
def _private_2(name):
return 'hello %s'%name
2.1 安装第三方库
a.在python中使用pip
包管理工具进行操作
第三方库资源官网:pypi.python.org
pip
使用:
>>> pip help #查看帮助信息
>>> pip install 包名 安装包
>>> pip uninstall 包名 卸载包
还可以安装 anaconda官网提供的gui安装包,常用的包都在里面
b. 模块搜索路径
默认情况下,python解释器会搜索当前目录,所有已安装的内置模块和第三方模块,搜索路径都会放在sys
模块中path变量中
>>> import sys
>>> sys.path
如果我们要添加自己的搜索目录,有两种方法
-
直接修改sys.path
>>> import sys >>> sys.path.append('/usrs/my_py_scripts')
-
设置环境变量
PYTHONPATH
,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。
2. 面向对象编程(oop)
2.1 类和实例:
- 定义:它和
php
也差不多,定义类通过class
关键字,它们也有封装
,继承
,多态
三大特型
#定义一个类
class Student(object):
class
后面紧接着是类名,类名通常是大写开头的单词,紧接着是(object) 表示该类是从哪个类继承过来的
- 实例: 通过
类名+()
的形式来实现
>>> student=Student()
-
如果在创建类的时候初始化参数,python提供了一个
__init__(self,name,age)
和php
中的__construct()
功能差不多,都是初始化一些数据的class Student(object): def __init__(self,name,age): self:name=name self:age=age
__init__()
的第一个参数永远是self
,表示创建的实例本身,当然这个值不用传
2.1 访问限制,
如何实现在class内部,属性和方法,不能通过外部调用直接赋值呢?
可以在方法或者属性前面添加__
class Student(object):
def __init__(self,name,age):
self.__name=name
self.__age=age
这样在外面就不可以访问了,如果想修改里面的值可以这样来操作
class Student(object):