一、函数
1.函数的作用域:
i=10
def func():
j=10
j+=1
print(j) #读不出来,因为j是局部变量
i=10
def func():
global j #强制把j设置为全局变量
j=10 #注意要赋值
j+=1
print(j)
func()
2.函数的定义和调用
#定义
def abc():
print("abcd!")
#调用
abc()
3.函数的形参和实参
def function1(a,b): #a和b为形参
if(a>b):
print(a)
else:
print(b)
function1(10,19) #10和19为实参
二、模块
1.导入方式:
>>> import urllib #导入整个模块
>>> from urllib.requet import urlopen #导入分模块
注意:导入至少一定要定位到文件(*.py)
例1:(导入精确到方法)
>>> from urllib.request import urlopen
>>> data1=urllib.request.urlopen("http://www.baidu.com").read()
>>> print(len(data1))
117072
例2:(导入精确到文件)
>>> from urllib import request
>>> data3=request.urlopen("http://jd.com").read()
>>> print(len(data3))
122391
2.自定义模块:
Module.py:
def hello():
return "hello,hi!"
存入Python安装目录的Lib文件夹中。
在SHELL中:
>>> import mymodule
>>> mymodule.hello()
'hello,hi!'
注意,return是返回一个值module.hello()代表的是一个变量("hello,hi!")
三、文件操作
1.打开文件(不存在则创建)
方法:
写入 open("地址","w")
读取 open("地址","r")
(二进制模式,出现问题概率小)
写入 二进制模式 open("地址","wb")
读取 二进制模式 open("地址","rb")
例子:
>>> open("F:/file1.txt","w")
<_io.TextIOWrapper name='F:/file1.txt' mode='w' encoding='cp936'>
>>> #创建句柄用来控制操作哪个文件
>>> fh1=open("F:/file2.txt","w")
>>> fh2=open("F:/file3.txt","w")
2.写入文件
>>> #文件写入
>>> contents1="我是写入文件的内容"
>>> fh.write(contents1) #也可直接双引号内容
9
>>> #写完记得关闭
>>> fh.close()
3.读取文件
(1)全部读取(格式可能有问题)
>>> fh1.close()
>>> fh1=open("F:/file3.txt","r")
>>> data2=fh1.read()
>>> print(data2)
读取内容.......
(2)按行读取(单次)
data3=fh1.readline()
>>> print(data3)
读取内容为空......
(3)按行读取(循环全部)
fh1=open("F:/file3.txt","r")
while True:
line=fh1.readline()
if len(line)==0:
break
print(line)
fh1.close()
四、异常处理
try:
print("My")
printssv("出现异常的语句")
except Exception as er:
print(er) #输出异常信息
print("hello")
输出:
My
name 'printssv' is not defined
hello
五、多线程
import threading
class A(threading.Thread):
def __init__(self): #可写参数,如(self,a)
threading.Thread.__init__(self)
def run(self):
for i in range(0,10):
print("我是线程A")
class B(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
for i in range(0,10):
print("我是线程B")
t1=A()
t1.start()
t2=B()
t2.start()
输出:
>>> 我是线程A我是线程B
我是线程A我是线程B
我是线程A我是线程B
我是线程A我是线程B
我是线程A我是线程B
我是线程A我是线程B
我是线程A我是线程B
我是线程A我是线程B
我是线程A我是线程B
我是线程A我是线程B