-
import module1,module2...,导入模块(.py文件)的所有内容
-
from module import xx,只从模块导入指定部分
-
from module import *,导入一个模块的所有内容,那些由单一下划线(_)开头的名字不在此例。引入的其它来源的命名,很可能覆盖了已有的定义。不建议使用
-
from Package import specific_submodule ,从包中导入模块
__name__属性
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用name属性来使该程序块仅在该模块自身运行时执行。
#!/usr/bin/python3
# Filename: using_name.py
if __name__ == '__main__':
print('程序自身在运行')
else:
print('我来自另一模块')
dir() 函数
内置的函数 dir() 可以找到模块内定义的所有名称(函数和变量)。以一个字符串列表的形式返回
函数
定义函数
def sum(p1,p2):
return p1*p2
调用函数时可使用的正式参数类型:
-
必需参数
-
必需参数须以正确的顺序和数量传入函数。
-
-
关键字参数
-
函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致
-
def user(name,age):
print(f'姓名:{name},年龄:{age}')
user(age=18,name='tom')
-
-
默认参数
-
调用函数时,如果没有传递参数,则会使用默认参数
-
def user(name,age,gender='male'):
print(f'姓名:{name},年龄:{age},性别:{gender}')
user('tom',15)
-
-
不定长参数
-
加了一个星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数
-
加了两个星号 ** 的参数会以字典的形式导入
-
星号 * 作为参数单独出现时,星号 * 后的参数必须用关键字传入
-
匿名函数lambda
# lambda [arg1 [,arg2,.....argn]]:expression
sum=lambda p1,p2:p1+p2
print(sum(1,2))
文件读写
-
open(filename,mode),打开文件后需要关闭 f.close()
-
filename:文件名
-
mode:r 读,w 写,r+/w+ 读写,a/a+ 读写的追加模式
-
-
with open(filename,mode) as f,自动关闭文件
面向对象
-
构造方法 __init__()
def __init__(self):
self.data = []
-
self,表示类的实例,类似于Java的this,类的方法必须有一个额外的第一个参数名称是 self
-
继承
class DerivedClassName(BaseClassName):
-
调用父类方法:super().methodName() 或者 BaseClass().methodName()
-
私有属性方法:属性、方法名用两个下划线开头,__private_attrs、__private_method
-
变量作用域
-
在内部作用域修改外部作用域的变量时,用global
num = 1
def fun1():
global num # 需要使用 global 关键字声明
print(num)
num = 123
print(num)
fun1()
print(num)-
修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,用nonlocal
def outer():
num = 10
def inner():
nonlocal num # nonlocal关键字声明
num = 100
print(num)
inner()
print(num)
outer() -
标准库
-
操作系统接口 os
-
执行脚本的命令行参数 sys.argv
-
字符串正则 re
-
数学 math
-
随机数 random
-
日期时间 datetime,time
json
dict中的key-value为单引号,json中的节点-值为双引号
json.dumps() 编码
json.loads() 解码