python基础(局部、全局变量、函数、文件的操作),全局变量python,python基础(局


python基础(局部、全局变量、函数、文件的操作)

局部变量 可以用返回值
全局变量
如果一个函数有返回值,在没有调用函数之前 用这个变量保存的话,没有任何的意义
global
如果在局部变量中加入global 用来对一个全局变量的声明
wendu = 0
def test1():
global wendu
wendu = 33

def test2():
print("%d"%wendu)
#test1()
test2() 结果为0

wendu = 0
def test1():
global wendu
wendu = 33

def test2():
print("%d"%wendu)
test1()
test2() 结果为33

全局变量可以在函数前面也可以在后面 不能在调用之后
局部变量 比 全局变量高
在函数中,如果对一个和全局变量名相同的变量 进行赋值的时候,默认是定义一个变量
只不过这个变量名字和全局白能量名字相同罢了
可以 加上g_

如果列表字典当作全局变量 不用添加global声明 可以直接当作全局变量来用

缺省参数 可以多个 只能放在后面
def test(a,b=100) 可以传,也可以不传 不传用默认,传了用传入的
def test(a,b=100)缺省参数
? ? return a + b
b = test(10)
print(b)
缺省函数多个时候 可以制定给谁传
eg:def test(a,b=11,c=33):
? ?test(11,12) 12会给b
? ?test(11,c =12) 实参 12给 传入的时候叫做命名参数 c为命名参数

+名子 args 官方
不定长参数
形参和实参 形参的个数大于实参的个数都存在不定长函数里面
一个元祖里面只有一个元素 要在后面加一个,
拆元组
拆包
**kwargs
拆×××

id(内存空间的地址)引用
a = 100
b =a 公用一个地址

c语言中 不一样 a = 100 b = 100 两个地址

可变类型与不可变类型
不可变 数字 字符串 元组
可变 列表 子典

递归函数
def getNum(num):
? ? if num >1:
?? ?? ? return num * getNum(num-1)
? ? else:
?? ?? ? return num

匿名函数
lambda 参数:式子
变量 = lambda x,y:x+y
变量()
用于字典的排序
stus = [{},{},{}]
stus.sort(key= lambda x:x["key"] or ["value"])

def test(a,b,func)
? ? result = func(a,b)
? ? print(result)
test(11,12,lambda x,y:x+y)

python3 字符串转化为命令
eval()去掉""相当于语句

字符串的操作
1.find()? 存在返回位置? 不存在返回-1
2.index()? 索引返回位置? 不参在报错
3.rfind()? ?从右往左
4.rindex()
5.count()出现次数
6.replace() 替换 .replace("","",如果字符串里面有重复的,这个位子可以跟第几个)
??不写默认重复的都修改
7.split() 切割 split(" ") 切割有消耗
8.capitalize() 字符串第一个大写
9.title()? 每个单词首字母大写
10.startswith() 判断字符串开头
11.endsswith() 判断结尾 后缀
12.upper() 都大写
13.lower() 都小写
14.rjust() 右对齐
15.ljust() 左对齐
16.center()里面可以跟宽度
17.lstrip() 删除左边的空格
18.rstrip() 删除右边的空格
19.partition(str) 分割成三部分
20.rpartition(str) 右边开始分割
21.splitline() 换行切 \n 碰见编程短字符串
22.isalpha()判断都是字母
22.isdigit() 判断都是纯数字
23.isalnum() 只包含字母和数字
24.isspace() 是不是纯空格
25.join() 字符串把一个东西连在一起

文件的的操作
f = open("","w")
r 只读 指针放在文件的开头
w 只写 存在覆盖 不存在创建
a 打开一个文件用于追加? 如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb 二进制打开一个文件只读 指针在开头
wb 而至今写入
ab 二进制追加
a+ 读写 存在 放在结尾
rb+
wb+
ab+
f.close()

如果open是打开一个文件,那么可以不用谢打开的模式,即只写?open(‘test.txt‘)
如果使用读了多次,那么后面读取的数据是从上次读完后的位置开始的
文件的重命名 import os
os .rename()
文件的删除 import os
os.remove()
文件的备份
#coding=utf-8

oldFileName = input("请输入要拷贝的文件名字:")

oldFile = open(oldFileName,‘r‘)

如果打开文件if oldFile:

提取文件的后缀

fileFlagNum = oldFileName.rfind(‘.‘)
if fileFlagNum > 0:
fileFlag = oldFileName[fileFlagNum:]

组织新的文件名字

newFileName = oldFileName[:fileFlagNum] + ‘[复件]‘ + fileFlag

创建新文件

newFile = open(newFileName, ‘w‘)

把旧文件中的数据,一行一行的进行复制到新文件中

for lineContent in oldFile.readlines():
newFile.write(lineContent)

关闭文件

oldFile.close()
newFile.close()
?
文件的随机读写

打开一个已经存在的文件

f = open("test.txt", "r")
str = f.read(3)
print "读取的数据是 : ", str

查找当前位置

position = f.tell()
print "当前文件位置 : ", position

str = f.read(3)
print "读取的数据是 : ", str

查找当前位置

position = f.tell()
print "当前文件位置 : ", position

f.close()
?
文件的操作
如果在读写文件的过程中,需要从另外一个位置进行操作的话,可以使用seek()
seek(offset, from)有2个参数
offset:偏移量
from:方向
0:表示文件开头
1:表示当前位置
2:表示文件末尾
demo:把位置设置为:从文件开头,偏移5个字节

打开一个已经存在的文件

f = open("test.txt", "r")
str = f.read(30)
print "读取的数据是 : ", str

查找当前位置

position = f.tell()
print "当前文件位置 : ", position

重新设置位置

f.seek(5,0)

查找当前位置

position = f.tell()
print "当前文件位置 : ", position

f.close()
?

demo:把位置设置为:离文件末尾,3字节处

打开一个已经存在的文件

f = open("test.txt", "r")

查找当前位置

position = f.tell()
print "当前文件位置 : ", position

重新设置位置

f.seek(-3,2)

读取到的数据为:文件最后3个字节数据

str = f.read()
print "读取的数据是 : ", str

f.close()
51cto地址http://blog.51cto.com/n1lixing

本站链接:http://www.ldxzs.top

?

python基础(局部、全局变量、函数、文件的操作)

评论关闭