2019.8.8学习内容及随堂笔记

文件的高级应用

前面学了r:read(读) , w:write(写) ,a:append(追加)三种用法

  1. r+ 即可读有可写(尽量不要使用),r+ 是在后面追加
with open('text.py','r+',encoding='utf-8') as f:
     data = f.read()
     #print(f.readable())
     f.write('x = 10')
     print(data)

注:尽量不要用这种方法

  1. w+ 即可写有可读(注:w 会清空文件,w+更不要使用),清空文件后再写入
with open('text.py','w+',encoding='utf-8') as f:
    data = f.readable()
    #print(data) (可读)
    f.write('333444')
    print(data)
  1. a+ 有追加的功能,a的指针在末尾,a+功能也没用
with open('text.py','a+',encoding='utf-8') as f:
    # data = f.readable()
    # print(data)
    # f.write('111222')
    # print(data)
    # f.seek(3,0) # 指针在末尾,seek(x,0),x代表跳过它来读取后面的数据(按字节位移)
    # data = f.read()
    # print(data) 
    f.write('x=10')
    f.flush()

文件的内置方法

seek(寻找)(按字节位移)

with open('text.py','rb') as f:
#     #f.seek(1,0) # 1表示位移1位,0表示从头开始
#     #print(f.read())
#     #.seek(2,1) # 2表示位移2位,1表示从当前位置开始
#     f.seek(0,2) # 0 表示位移0位,2表示从文件末开始,把指针移到文件末
#     print(f.read())

tell(告诉) ,按字节位移

tell(告诉) #字节
with open('text.py', 'r', encoding='utf-8') as f:
    f.seek(2, 0)
    print(f.tell())

read(n) 只在r 模式下

with open('text.py', 'r', encoding='utf-8') as f:
    # print(f.read(2))

truncate

with open('text.py', 'a', encoding='utf-8') as f:
    data = f.truncate(7)# 把2个字符后面的东西清空
    print(data)

注:以上四个方法可以用,但是没有必要

文件修改的两种方式

首先,文件没有修改一说,只有覆盖一说

import os
# with open('text.py','r',encoding='utf-8') as fr,\
#     open('test.txt','w',encoding='utf-8') as fw:
#     data = fr.read()
#     data = data.replace('1444555','111222')
#     fw. write(data)
# os.remove('text.py')
# os.rename('test.txt','text.py')
import os
with open('text.py','r',encoding='utf-8') as fr, \
    open('test.py','w',encoding='utf-8') as fw:
    for i in fr:
        i = i.replace('111222','chen handsome')
        fw.write(i)
os.remove('text.py')
os.rename('test.py','text.py')

函数的定义

函数更多是一种思想,他不是一种技术

def register():
"""注册函数"""
    username = input('请输入你的用户名:')
    pwd = input('请输入你的密码:')

    with open('user_info.txt', 'a', encoding='utf8') as fa:
        fa.write(f'{username}:{pwd}|')
register()
def login():
    """登录函数"""
    username = input('请输入你的用户名:')
    pwd = input('请输入你的密码:')

    with open('user_info.txt', 'r', encoding='utf8') as fr:
        data = fr.read()
        user_list = data.split('|')
        print(user_list)
        user_info = f'{username}:{pwd}'
        if user_info in user_list:
            print('登录成功')
        else:
            print('傻逼,密码都忘了')
login()

函数的定义方式

"""
def 函数名() #定义阶段(相当于造车轮阶段)
    """函数注释写在这里""" #函数相当于工具,注释相当于工具的说明书
    <代码块>
    
 #使用 #调用阶段(相当于开车阶段)
 函数名()

"""

牢记:定义阶段不执行函数体代码,只检测语法错误***

def func()
   """func函数的注释撒地方撒地方撒大方"""
    # todo:未来写一个函数
    pass
print(login.())

常用的内置方法:

字符串:split

列表:append

字典:get

集合:add

read(), write()

函数的三种定义方式

参数:就是未知数,变量的意思

无参函数 #工具可以单独使用

def add():
    """无参函数"""
    x = input('num1')
    y = input('num2')
    print(int(x)+int(y))
add()    

有参函数

def add(x,y):  # 这个不能单独使用,必须加上配件才能使用
   """有参函数"""
    print(int(x)+int(y))
print(1)   
x = input('num1')
y = input('num2')
add(x,y)

空函数:定义了函数,啥都没有

def func():   #只知道工具叫什么名字,但不知道如何造出这个工具
    pass

函数的调用

什么书函数的调用:就是函数名()即调用函数,会执行函数

体代码,知道碰到return或者执行完函数体内所有代码后结束

函数运行完所有代码,如果函数体不写return,则会返回None

为什么调用函数:调用函数就是要使用函数的功能

例如:

def add(x,y):
    reeturn x + y
    res = add(10,20)
    print(res*10)

函数的返回值

什么是返回值:返回值就是内部代码经过一系列逻辑处理获得的结果

def func():
    name = 'nick'
    return name
name = func()
print(name)
def add(x,y):
    #逻辑
    print(x+y)
    return x + y  # 函数的返回值,终止函数(跳出函数)
res = add(10,20)
print(res)
def add(x,y):
    # (x,y,x+y) # return可以返回任意数据类型
    return x,y,x+y  # 不加括号返回多个值时,默认用元组的形式返回

x,y,z = add(1,2)
print(x,y,z)

函数的参数

def add(num1,num2): #表示形参
    """有参函数"""
    print(int(num1)+int(num2))
add(1,2) # 表示实参

形参:定义阶段才有形参,形式参数,啥也没用,只是占个位置,具有描述意义

实参:调用阶段才有实参,实际的参数,具有具体的值

位置形参:就是一个一个的写形参

def add(num1,num2): #形参
    """有参函数"""
    print(num1)
    print(num2)          # 这样一个一个写形参,就是位置形参
    print(int(num1)+int(num2))
 

位置实参:一个一个的写过去,就是位置实参

add(1,2) #实参

注:两个位置形参,就必须得要两个位置实参对应,从左到右一一对应

默认形参:不需要传参,可以使用默认值;如果传参就使用你传的值,默认形参必须放到位置形参后面

def shopping(name='nick'): # 形参经常会引用同一个值
    goods_dict = {1:'特斯拉',2:'奔驰',3:'nick'}
    print(f'恭喜{name},得到{goods_dict[1]}一个')
shopping()

关键字实参:按照形参名给定具体的值,可以打破位置形参必须得一一对应规则

def shopping(x,name = 'nick'):
    goods_dict = {1:'特斯拉',2:'奔驰',3:'nick'}
    print(f'恭喜{name},得到{goods_dict[x]}')
shopping(1,name = 'kuiming')

注:函数的参数尽量不要超过3个

关键字形参:需要用的时候用,一般用位置形参+位置实参

猜你喜欢

转载自www.cnblogs.com/chmily/p/11348650.html
今日推荐