python学习打卡@Task4

函数

函数能提高应用的模块性,和代码的重复利用率。

定义

def 函数名(参数列表):
    函数体

参数

  • 关键字参数
    使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值
def person( name, age ):
   print ("名字: ", name)
   print ("年龄: ", age)

person( age=10, name="python" )

运行结果

名字:  python
年龄:  10
  • 默认参数
    调用函数时,如果没有传递参数,则会使用默认参数
def add( a, b = 0 ):
   "求和"
   print (a + b)
   return

add(1 + 2)
add(1)

运行结果

3
1
  • 不定长参数
    加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数
def functionname([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]

变量作用域

变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:

  • L (Local) 局部作用域
  • E (Enclosing) 闭包函数外的函数中
  • G (Global) 全局作用域
  • B (Built-in) 内置作用域(内置函数所在模块的范围)

以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。

  • 局部变量和全局变量
    定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

  • global和nonlocal关键字
    局部作用域内修改全局变量需要用到global关键字

num = 1
def fun1():
    global num  # 外部全局变量引用
    print(num) 
    num = 123
    print(num)
fun1()
print(num)

运行结果

1
123
123

修改嵌套作用域中的变量则需要 nonlocal 关键字

def outer():
    num = 10
    def inner():
        nonlocal num   # 引用outer()中定义的变量num
        num = 100
        print(num)
    inner()
    print(num)
outer()

运行结果

100
100

返回值

return [表达式] 语句用于退出函数,不带参数值的return语句返回None

文件

打开文件

open() 方法用于打开一个文件,并返回文件对象,如果文件无法被打开,会抛出 OSError。
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

open(file, mode='r')

mode种类有:

模式说明
t文本模式 (默认)
x写模式,新建一个文件,如果该文件已存在则会报错
b二进制模式
+打开一个文件进行更新(可读可写)
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

文件对象操作

  • close()
    关闭文件
  • flush()
    刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
  • readline([size])
    读取整行,包括 “\n” 字符。
  • readlines([sizeint])
    读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

对excel及csv文件进行操作

  • excel
    使用前需安装第三方库:xlrd,xlwt,xlutils等
    xlrd只能进行读操作
import xlrd, xlwt 
#读取
rows = []   
book = xlrd.open_workbook('testdata.xlsx')  
sheet = book.sheet_by_index(0)    
for user in range(1, sheet.nrows):  
    rows.append(list(sheet.row_values(user, 0, sheet.ncols)))  
    print(rows)

#写入
rows1 = [['Name', 'Age'],['python', 0],['java', 1]]
book1 = xlwt.Workbook()   
sheet1 = book1.add_sheet('user')   
for i in range(0, 3):    
     for j in range(0, len(rows1[i])):
         sheet1.write(i, j, rows1[i][j])
book1.save('testdata1.xls')  
  • csv
    读取csv文件
import csv

with open('testdata.csv', 'r') as csv_file:
    reader = csv.reader(csv_file)
    next(csv_file, None)
    for user in reader:
        print(user)

从字典写入csv文件

dic = {'name':pyhon, age:10}
csv_file = open('testdata1.csv', 'w', newline='')
writer = csv.writer(csv_file)
for key in dic:
    writer.writerow([key, dic[key]])
csv_file.close()   

csv_file1 = csv.reader(open('testdata1.csv','r'))
    for user in csv_file1:
        print(user)

os模块

os 模块提供了非常丰富的方法用来处理文件和目录。

  • os.chmod(path, mode) 更改权限
  • os.getcwd() 返回当前工作目录
  • os.makedirs(path[, mode]) 递归创建文件夹
  • os.path模块,主要用于获取文件的属性
    具体待完善

datetime模块

datetime模块定义了下面这几个类:

  • datetime.date 表示日期的类。常用的属性有year, month, day
  • datetime.time 表示时间的类。常用的属性有hour, minute, second, microsecond
  • datetime.datetime 表示日期时间
  • datetime.timedelta 表示时间间隔,即两个时间点之间的长度
  • datetime.tzinfo 与时区有关的相关信息
    具体待完善
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值