# == == == == == == == == == == == == == == == ==
# -*- coding:utf-8 -*-
# @Author:henry
# @Time:2020/6/2 9:37
# Email:yinpingwei@gmail.com
# @File: 2020-06-01python作用域,文件操作.py
# == == == == == == == == == == == == == == == == =
# 作用域
# 局部变量:函数内部定义的变量
# 全局变量:函数外部定义的变量
# 全局变量在函数中可以使用,但是不能修改
sum_global = 0 # 全局变量
# 求和,传进来的参数的和
def add(*args):
global sum_global # 需要声明下,就可以使用全局变量
sum = 0 # 局部变量,只有内部可以使用
for item in args:
sum += item
print(sum_global) # 第一次调用打印是0
return sum # 返回sum 的值
# s = add(1,3,4,5,6)
# print(s)
sum_global += add(1,3,4,5,6) # 累加
sum_global += add(100,200,300,400) # 累加
print(sum_global)
# 函数传参小妙招:拆包
# 注意:调用函数传参时,可拆包
# 1.*:传递参数时可以对元组/列表拆包
# 重点是:长度完全要对应 这个用的最多
my_list = [100,200,300,400] # 定义一个列表
def add(a,b,c,d): # 调用给的值
sum1 = a+b+c+d
print(sum1)
# return sum1 # 返回sum1
add(*my_list) # 调用my_list的列表的值,传参的时候,用*变量名拆包
# 2.**:传递参数时可以对字典拆包
def add(**kwargs): # 传字典的值
for key,value in kwargs.items():
print(key,value)
person_info = {'姓名':'大猫','年龄': 18,'city':'深圳' } # 传入字典的值
add(**person_info) # 传参的时候,用**变量名拆包
# 内置函数
# id() 查看数据内存地址
print('*********************',id(my_list)) # 查看内存地址
# print():输出
# input():输入
# type():查看类型
# range():生成整数序列
# len():获取数据的长度(元素总数)
# int,float,bool,str,list,dict,tuple,set:代表对于的数据类型
# 这里重点掌握int,str
nums = [100,200,54,12,96] # 列表
# min():求最小值
print(min(nums)) # 求最小值
# max():求最大值
print(max(nums)) # 求最小值
# sum():求和
print(sum(nums)) # 求和
# 文件操作
# 文件的打开操作(打开模式(r),编码格式:encoding='utf_8')
# fs = open('py30.txt') # 使用open()函数 打开文件,相对路径
fs = open(r'F:\PyChaer-workspare\py30\2020-06-01\py30.txt',encoding='utf_8') # 打开文件, 绝对路劲
'''
r :只读
1.文件一定要存在,不然会报错
2.默认为只读模式
'''
# 1.读取模式有三种方式:
# 第一种:read() 全部都读取出来
s = fs.read() # 所有数据都读取出来
print(s)
# 第二种:readline() 读取一行数据
s1 = fs.readline() # 读取一行数据
print(s1)
s2 = fs.readline() # 接着读取下一行数据。。。。。
print(s2)
# 第三种:readlines() 按行读取所有数据,结果为列表,一行为一个成员
s3 = fs.readlines() # 按行读取所有数据,结果为列表,一行为一个成员
print(s3)
# 2.文件的写入操作
'''
w :只写
1.若文件不存在,会自动进场创建
2.文件所在的目录一定要存在,不然会报错
3.会覆盖原有内容
4.只能写入,不能读取
'''
# 使用了外部资源,一定要进行关闭操作
fs = open(r'F:\PyChaer-workspare\py30\2020-06-01\py30.txt','w',encoding='utf_8') # 打开文件模式:w, 绝对路劲
# 写入模式有二种方式: 注意:需要自己换行,加入换行符\n
# 第一种:write() 写入数据,
fs.write('大家好,我是py30!!!') # w模式,会覆盖原有内容
fs.close() # 关闭文件,释放资料,第三方资源
# 第二种:writelines() 写入列表当中每个成员
fs.writelines('大家好,我是py30!!!,今天好搞笑呀,看见了什么')
fs.close()
# 文件的追加操作
# 追加,在原有的文件内容之后,追加新的内容
# 追加:'a'模式
fs = open(r'F:\PyChaer-workspare\py30\2020-06-01\py30.txt','a',encoding='utf_8') # 打开文件模式:a, 绝对路劲
fs.write('\n规划科技馆刚发的!!!') # 追加,也是写的一种
fs.close()
# 写,追加如果不存在,会自动创建
# 如果文件所在的目录不存在,会报错
fs = open('new.file.tex','a',encoding='utf_8') # 文件不存在,自动创建
fs.write('我是新文件') # 写入数据
fs.close() # 关闭
# 可读可写
# r+ 可读可追加
# w+ 先清除内容
# 4.会主动关闭文件,不需要你去调用close()
# with as 操作
with open('new.file.tex','a',encoding='utf_8') as fs:
fs.write('\n我是新文件3') # 写入数据