day7

一、回顾

1、列表和字典在循环里边尽量不要删除元素,很麻烦

2、元组:如果元组里边只有一个逗号,且不加逗号,次元素是什么类型,就是什么类型。

二、集合

 '''
集合:可变的数据类型,它里边的元素,是不可变数据类型;无序,不重复
{}
'''
#错的:
# set1 = set({, , })
# set2 = {, , , [, ], {'name': "alex"}} # 对的
set1 = {'alex', 'wusir', 'ritian', 'egon', 'barry', 'barry'}
# 增add、update
# add
# set1.add('女神')
# update
# set1.update('abv') # 删
# pop:随机删除
# set1.pop() # 返回删除的元素
# remove:按照元素删除
# set1.remove("alex") # 没有元素会报错
# set1.clear() # 查
# for i in set1:
# print(i) # 集合
set1 = {, , , , }
set2 = {, , , , } # 交集
# print(set1 & set2)
# print(set1.intersection(set2)) # 并集
# print(set1 | set2)
# print(set2.union(set1)) # 反交集
# print(set1 ^ set2)
# print(set1.symmetric_difference(set2)) # 差集
# print(set1 - set2)
# print(set1.difference(set2)) # 子集:返回True 或者 False
# set1 = {, , }
# set2 = {, , , , , }
# print(set1 < set2)
# print(set1.issubset(set2))
# 超集:返回True 或者 False
# print(set1 > set2)
# print(set1.issuperset(set2)) # 去重
# li = [,,,,,,,,,,,]
# li = set(li)
# li = list(li)
# print(li) # 冻住集合,变为不可变类型
s = frozenset('barry')

day8

1、文件操作

 # 绝对路径D:\测试.txt
# f = open('D:\测试.txt', mode='r', encoding='gb2312')
# contert = f.read()
# print(contert, type(contert))
# f.close() # 只读r
# f = open('log', mode='r', encoding='utf-8')
# contert = f.read()
# print('{}\n{}'.format(contert, type(contert)))
# f.close() # 只读rb
# f = open('测试', mode='rb')
# contert = f.read()
# print('{}\n{}'.format(contert, type(contert)))
# f.close() # 写w:没有的话创建,有的话覆盖原文件
# 没有创建
# f = open('log', mode='w', encoding='utf-8')
# f.write('骑兵步兵')
# f.close()
# 覆盖
# f = open('log', mode='w', encoding='utf-8')
# f.write('经典拉扣设计的啦')
# f.close() # 写wb:
# f = open('log', mode='wb')
# f.write('大手大脚拉开手机'.encode('utf-8'))
# f.close() # 追加
# a
# f = open('log', mode='a', encoding='utf-8')
# f.write('\n追加文字"啦啦啦啦啦啦"')
# f.close() # ab
# f = open('log', mode='ab')
# f.write('追加文字"啦啦啦啦啦啦"'.encode('utf-8'))
# f.close() # 读写'r+':先读,再写
# f = open('log', mode='r+', encoding='utf-8')
# print(f.read())
# f.write('\n读写“哈哈哈”')
# f.close() # 读写r‘+’:先写再读 这种方式会重头开始写,然后一个字符一个字符的覆盖原有内容
# f = open('log', mode='r+', encoding='utf-8')
# f.write('aaa')
# print(f.read())
# f.close() # 写读:w+
# f = open('log', mode='w+', encoding='utf-8')
# f.write('aaa')
# f.seek(0)
# print(f.read())
# f.close() # 功能详解
f = open('log', mode='r+', encoding='utf-8')
# content = f.read(3) # 前三个字符
# f.seek(14) # 按照字节进行跳转光标
# f.tell() # 告诉你光标的位置
# f.readable() # 判断是否可读
# f.readline() # 一行一行的读
# print(f.readlines()) # 每一行当成列表中的元素,添加到list中
# f.truncate(3) # 截取前三个
# for line in f:
# print(line)
# f.close() # 追加查看
# f = open('log', mode='a+', encoding='utf-8')
# f.write('\n追加文字李二')
# f.seek(f.tell()-9)
# print(f.read(2))
# f.close() #with 循环
# with open('log', mode='a', encoding='utf-8') as l, \
# open('测试', mode='a', encoding='utf-8') as c:
# l.seek(6)
# l.write('咚')
# c.seek(6)
# c.write('咚')

文本文件操作

2、解码

 s = 'abf'
b = s.encode('utf-8')
print(b)
#byte --->str decode 解码
s1 = b.decode('gbk')
print(s1)

day9

1、复习

 # 文件处理

     # 打开文件
# open(‘路径’,mode'打开方式',encoding'编码方式')
# 打开方式 r w a r+(可读可写) w+(可写可读) a+(可追加可读) b
# r+ 打开文件直接写 和读完再写
# 编码方式:一般用utf-8
# 操作文件
# 读:
# read:一次性读
# readlines:一次性读
# readline:一行一行读
# 不知道哪里结束
# 视频、图片是 用rb打开 文件是bytes,可以按照字节读
# for循环 --> 最好
# 写:
# write:
# 光标 ——> 文件指针
# seek ——> 指定光标移动到某个位置
# tell ——> 获取光标位置
# truncate ——> 截取文件
# 关闭文件
# close
# 修改文件
# 文件python没有提供 # 修改文件方法
# with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8') as f2:
# for line in f:
# if '星儿' in line: #班主任:星儿
# line = line.replace('星儿','啊娇')
# #写文件
# f2.write(line) #小护士:金老板
#
# import os
# os.remove('小护士班主任') #删除文件
# os.rename('小护士班主任.bak','小护士班主任') #重命名文件

文件操作复习

2、返回值

 # def my_main():
# return "返回值" # 返回值三种情况:
# 1、没有返回值:①不写return ②只写return ③ return None
# ①
# def func():
# l = ['老大', '老二'] # ②只写return,没有返回值
# def func():
# l = ['老大', '老二']
# return # 2、返回一个值:可以返回任何数据类型,只要返回了就可以接受
# def func():
# return [1, 2, 3, 4]
# print(func()) # 3、返回多个值:可以用多个变量接收、也可以用一个变量接受,会接受一个元祖
# def func():
# return 1, 2
#
#
# a, b = func()
# print(a, b)
# 参数,定义时候的参数叫做形参,传入参数叫做实参
# def my_len(形参)
# print('6')
# my_len('实参')

def定义函数的返回值

3、函数的参数问题

 # 没有参数
# 定义参数和调用参数的括号都不写内容
# 有一个参数
# 传什么就是什么
# 有多个参数
# 按照位置传参
# def my_sum(a, b):
# res = a + b
# return res
# my_sum(1, 2) # 按照关键字传参
# def my_sum(a, b):
# res = a + b
# return res
# my_sum(b = 2, a = 1) # 混着用:必须先按照位置传参,再按照关键字传参
# def my_sum(a, b):
# res = a + b
# return res
# my_sum(1, b = 2) # 动态传参
# def func(*args):
# print(args)
# l = [1,2,3,4,5]
# func(*l)
# def func(**kwargs):
# print(kwargs)
# d = {'a':1,'b':2}
# func(**d) # 站在形参角度
# 位置参数:必须传,且有几个参数就传几个值
# 默认参数:可以不传,不传的话使用默认值 # def classmate(name, sex='男'):
# print('%s : %s' % (name, sex))
# classmate('二哥')
# classmate('小孟', '男')
# classmate('大猛', '男')
# classmate('朗哥', '女') # 动态参数:可以接受任意个参数*args必须在**kwargs之前
# ①*args:接收的是按照位置传参的值,组织成一个元祖
# ②**kwargs:接收是按照关键字传参的,组成一个字典
# def my_sum(*args):
# n = 0
# for i in args:
# n += i
# return n
# print(my_sum(1, 2, 3, 4))
# 形参参数的定义顺序:位置参数,*args,默认参数,**kwargs # 函数的注释
def func(l,b):
""" :param l:
:param b:
"""

函数的形参和实参

day10

1、复习和作业讲解

2、默认函数陷阱

 def qqxing(l = []):
l.append(1)
print(l) qqxing()
qqxing([])
qqxing()
qqxing() # 如果默认参数的值是一个可变数据类型,那么每一次调用函数的时候,如果不传值就公用这个数据类型的资源

默认函数陷阱

3、函数的命名空间

 # 函数进阶

 # 命名空间个作用域

 # 内置的命名空间
# 就是python解释器一启动就可以使用的名字存置命名空间中
# 内置命名在启动python解释器的时候被加载进内存里
# 全局命名空间
# 实在程序从上到下被执行的过程中依次被加载进内存的
# 放置了我们设置的所有变量和函数命
# 局部命名空间
# 就是函数内部的名字
# 就是调用函数的时候 才会产生这个命名空间,随着函数执行的结束,这个名称空间就消失了 # 在局部:可以使用全局、内置命名空间中的名字
# 在全局:可以使用内置命名空间的名字,但是不能使用局部
# 再内置:不能使用局部和全局的名字的 # 作用域
# 全局作用域 -- 作用在全局 -- 内置和全局名字空间中的名字都属于全局作用域 -- locals
# 局部作用域 -- 作用在局部 -- 函数(局部名字空间中的名字属于局部作用域) -- globals
a = 1
b = 2
def func():
x = 'aaa'
y = 'bbb'
print(locals())
func()
print(globals())
# globals:永远打印全局的名字
# locals:输出什么,根据locals所在的位置 # a = [1,2]
# def dunc():
# a.append(3)
# dunc()
# print(a) # 对于不可变数据,在局部可以查看全局作用域中的变量
# 但是不能修改
# 如果想要修改,需在程序的一开始添加global生命
# 如果在一个局部(函数)内声明一个global变量,那么这个变量在局部的所有操作对全局的变量有效

函数的命名空间

4、函数的嵌套和作用域链

 # def max(a, b):
# return a if a > b else b
#
#
# def the_max(x, y, z): # 函数的嵌套调用
# c = max(x, y)
# return max(c, z)
#
#
# print(the_max(1, 2, 3)) # nonlocal 只能用于局部变量,找上层中离当前最近一层的局部变量 # 闭包
a = 1 def outer(a): def inner():
nonlocal a
a += 1
print(a)
# print(inner.__closure__) # 点有这个不返回None就会就是闭包
return inner inner = outer(5) inner() # import urllib # 模块,就是一个python文件
# from urllib.request import urlopen
# urlopen('')

函数的嵌套和作用域链(闭包)

day 7 -10 集合,文本、文件操作,函数的更多相关文章

  1. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

  2. Delphi文件操作函数

    文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...

  3. 文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

  4. PHP常用的文件操作函数集锦

    以下是个人总结的PHP文件操作函数.当然,这只是部分,还有很多,我没有列出来. 一 .解析路径: 1 获得文件名:basename();给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件 ...

  5. C语言文件操作函数

    C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * str ...

  6. 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)

    参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...

  7. Linux C 文件操作函数(~上善止水~)

    翻翻笔记,整理一下 C 语言中的文件操作函数 ~~~~~~,多注意细节,maybe 细节决定成败~ 1. fopen /* fopen(打开文件) * * 相关函数 open,fclose * * 表 ...

  8. C语言文件操作函数大全(超详细)

    C语言文件操作函数大全(超详细) 作者: 字体:[增加 减小] 类型:转载 本篇文章是对C语言中的文件操作函数进行了详细的总结分析,需要的朋友参考下   fopen(打开文件)相关函数 open,fc ...

  9. 总结文件操作函数(二)-C语言

    格式化读写: #include <stdio.h> int printf(const char *format, ...);                   //相当于fprintf( ...

  10. python03-break、continue、for循环、数据bytes类型、字符串与字节的关系、变量指向与深浅拷贝、set集合、文件操作

    目录: 1.break.continue 2.for循环 3.数据bytes类型 4.字符串与字节的关系 5.变量指向与深浅拷贝 6.set集合 7.文件操作 一.break.continue bre ...

随机推荐

  1. debian下如何源码安装tmux

    一.源码安装ncurses库 1.1 获取源码 wget https://invisible-island.net/datafiles/release/ncurses.tar.gz tar xvf n ...

  2. Manjaro 系统添加国内源和安装搜狗输入法

    添加中科大源 #打开配置文件 kate /etc/pacman.conf 在文件末尾添加 [archlinuxcn] SigLevel = Optional TrustedOnly Server = ...

  3. 彻底地/ 终于地, 解决 关于apache 权限的问题了:: 修改 DocumentRoot后的 403错误: have no permission to access / on this server

    目录的权限都 应该设置 为 drwxr_xr_x, 即755, 而html下的文件的权限设置为; 644 即可! -x 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性. -w权限, ...

  4. 二次剩余&&Cipolla

    目录 二次剩余 勒让德符号(legendre symbol) Cipolla's Algorithm. 代码 end 二次剩余 给定y和奇质数p,求x,使得\(x^2≡y(mod p)\) 勒让德符号 ...

  5. What are the differences between Flyweight and Object Pool patterns?

    What are the differences between Flyweight and Object Pool patterns? They differ in the way they are ...

  6. 挺不错的Java自学网站

    挺不错的Java自学网站 http://how2j.cn?p=29369

  7. Docker2之Service

    Make sure you have published the friendlyhello image you created by pushing it to a registry. We’ll ...

  8. elastic-job的原理简介和使用

    转载:http://blog.csdn.net/fanfan_v5/article/details/61310045 elastic-job是当当开源的一款非常好用的作业框架,在这之前,我们开发定时任 ...

  9. A Simple Note on "P4FPGA: A Rapid Prototyping Framework for P4"

    论文:P4FPGA: A Rapid Prototyping Framework for P4 Github:https://github.com/p4fpga Reference: Han Wang ...

  10. Ubuntu 14.04 上安装 Gurobi

    参考: Installing Gurobi 7 on Linux Ubuntu 14.04 上安装 Gurobi 1.在gurobi上创建一个账户,并登陆: 2.从gurobi optimizer上下 ...