0、系统变量
__all__ # 模糊导入import *
__file__ # 文件所在路径
__name__ # 当前代码所在的模块:主模块?
if __name__ == "__main__":
1、python的起源
Guido希望有一种语言,既像C语言那样能全面调用计算机的功能接口,又可以像shell那样可以轻松的编程。
2、python2有中文
# -*- coding: UTF-8 -*-
3、获取用户输入信息input,相当于C++中的cin>>
high = input("请输入你的身高:") # input获取的数据,type都是string
4、格式化输出
print("姓名 = %s,身高 = %s,年龄 = %d" %(name, high, age) )
5、变量类型之间的转换
int() float() long()
str() # int、float、long等类型转换成string
6、变量命名方式:驼峰法—>englishScord
7、关键字:python一些具有特殊功能的标识符,如:import、global
8、逻辑运算符:and、or、not
9、python中不一样的for循环:逐个取出每一个元素
10、全局变量、局部变量
① 全局变量命名的建议:g_变量名
② 定义list、dict类型的全局变量,在def中不需要使用global声明
③ globals() 、 locals() 查看所有的全局、局部变量
g_a = 100 # 定义一个全局变量
def changA():
global g_a # 声明全局变量
g_a = 0
print(g_a)
11、返回多个值
① 默认返回的是元组,如:return a,b —> (a,b)
② 若想返回list,要使用[]括起来,如:return [a,b] —> [a,b]
12、不定长参数
def test1(a,b,*args,**kwargs):
print(a) # 11
print(b) # 2
print(args) # (3, 4)
print(kwargs) # {'work': 5, 'done': 6}
test1(1,2,3,4,work=5,done=6)
输出结果:
1
2
(3, 4)
{'work': 5, 'done': 6}
----
def test2(a,b,*args,**kwargs):
print(a) # 11
print(b) # 22
print(args) # (33, 'a', 'b')
print(kwargs) # {'age': 18, 'name': 'Tom'}
args=("a","b")
kwargs={"name":"Tom","age":18}
test2(11,22,33,*args,**kwargs) # 说明: * 拆元组 ** 拆字典
输出结果:
11
22
(33, 'a', 'b')
{'age': 18, 'name': 'Tom'}
13、将变量a的值赋值给b:本质上是a和b指向同一个内存空间,相当于b是a的引用。
14、匿名函数,即lamba表达式
有时候,写一个函数很麻烦,则使用lamba定义一个匿名函数对象
① 格式:
lambda argument_list:expression
lambda 参数列表:表达式(返回值)
② lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。
③ lamba函数对象,一般被用于作为“实参”、“形参”
15、异常处理 Expection ===> raise
try:
#open("xxx.txt")
print(Num)
except NameError as ex:
print(ex)
except FileNotFoundError as ex: # 单个异常
print(ex)
except (NameError,FileNotFoundError) as ex: # 多个异常,使用()括起来
print(ex)
except Exception as ex: # 捕获所有的异常
print(ex)
else: # 无异常
print("没有异常才会执行的功能")
finally:
print("不管有无异常,都会执行") # file.close()
16、 模块
① /usr/lib/python3.5下面的.py文件都是 [模块]
② 生成__pycache__文件,生成 [ 模块名.cpython-35.pyc ] 文件
功能:函数名、类名、全局变量
方式1:
from 模块名 # 导入
模块名.功能() # 调用
方式2:
from 模块名 import 功能 # 导入
功能() # 调用
方式3:
from 模块名 import * # 模糊导入
功能() # 调用
__all__ = ["函数名","类名","全局变量名"] # 定义__all__用来模糊导入
17、 包
① __init__.py 的作用:使文件夹变成“包”,即:python中package的标识,不能删除
② 导入模块的搜索路径,由sys.path决定
sys.path.insert(0,caffe_root+'python')
③ 重新导入:reload(模块名)
④循环导入:a、b相互导入,会报错
18、给程序传参数: sys模块
import sys
name = sys.argv[1]
age = sys.argv[2]
print("名字 = %s,年龄 = %s" %(name,age))
执行命令:
python3 James 35
执行结果:
名字 = James,年龄 = 35
19、文件操作
1、打开
f = open("test.txt","w") # r w a +
2、关闭
f.close()
3、读取
f.read() # 一次性全部读取出文件内容
f.read(nbyte) # 一次读取nbyte个字节的内容
f.readline() # 一次读取一行
4、写入
f.write("hello world\n")
5、移动文件指针:seek(offset,whence)
offset:偏移的字节数
whence:0文件开头 1当前位置 2文件末尾
6、获取文件指针的位置
f.tell()
20、文件夹操作
import os
os.rename("xxx.txt","new_xxx.txt") # 重命名文件
os.remove("待删除文件")
os.mkdir("文件夹名字")
os.rmdir("待删除文件夹名字")
os.getcwd()
os.chdir("../") # 改变默认路径
os.listdir("./") # 获取当前目录下的所有的文件名
21、 == 和 is
== 比较 [值/内容] 是否相等
is 比较 [对象] 是否相等
22、浅拷贝、深拷贝
a = [11,22,33]
b = a # 浅拷贝:a、b指向同一块内存空间
id(a) == id(b)
import copy
c = copy.deepcopy(a) # 深拷贝:a、c指向不同的内存空间
id(a) == id(c)