python函数基础(3)
第1章 编码补充
1.1 字符编码对照表
1.2 编码特性
1.4 encode/decode
第2章 集合
2.1 特点
2.2 【重点】作用:去重
2.3 常用操作
2.3.1 删除
2.3.2 交集判断-isdisjoint
2.4 列表转换集合
2.5 集合转换列表
第3章 深浅copy
3.1 共用内存地址
3.2 copy参数
3.3 copy特性
3.3.1 例:浅copy
3.3.2 例:深copy
3.3.3 切片浅copy
第4章 文件操作
4.1 文件打开方式-open
4.2 文件句柄
4.3 读r
4.3.1 默认:方式全部读出来
4.3.2 read(n):读一部分
4.3.3 rb
4.3.4 readline()
4.3.5 readlines()
4.3.6 for 循环
4.3.7 r+ r+b
4.4 写:w
4.4.1 wb
4.4.2 图片的读写
4.4.3 图片的写入
4.4.4 w+
4.4.5 w+b
4.5 追加:a
4.5.1 ab
4.5.2 a+
4.5.3 a+b
4.6 其他操作方法
4.6.1 常用参数列表
4.6.2 with open
4.6.3 更改文件
4.6.4 版本升级
第5章 函数
5.1 初识函数
5.2 函数返回值
5.2.1 return
5.2.2 例:
5.3 函数传参
5.3.1 形参
5.3.2 实参
第6章 拾遗
6.1 'is'/'id'/'=='区别
6.2 小数据池
第1章 编码补充
1.1 字符编码对照表
编码格式 |
别名 |
表示内容 |
例举 |
ascii |
英文 |
可以表示,数字,字母 特殊字符; 字节:8位表示一个字节; 字符:是你看到的内容的最小组成单位 |
abc : a 一个字符。 中国:中 一个字符 a : 0000 1011 |
unicode |
万国码 |
可以表示万国语言; 字节:32位表示一个字节 |
a : 0000 1011 0000 1011 0000 1011 0000 1011 中: 0000 1011 0000 1111 0000 1011 0000 1011 |
gbk |
国标 |
英文表示用一个字节 中文表示用两个字节 |
a: 0000 1011 中:0000 1011 0000 1011 两个字节 |
utf-8 |
通用 |
最少用8位表示一个字符 |
a: 0000 1011 欧洲: 0000 1011 0000 1011 亚洲中:0000 1011 0000 1011 0000 1011 |
1.2 编码特性
u 不同编码之间的二进制是不能互相识别的。
u 对于文件的存储,及传输 不能是unicode的编码。
u bytes:内部编码方式(非unicode,utf-8,gbk.gb2312...)
u str : 内部编码方式unicode
1.3 例:
# !/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = 'alex'
b1 = s1.encode('utf-8')
print(b1)
b1 = b'alex'
print(s1.capitalize())
print(b1.capitalize())
s1 = '中国'
b1 = s1.encode('utf-8')
print(b1)
输出
b'alex'
Alex
b'Alex'
b'\xe4\xb8\xad\xe5\x9b\xbd'
1.4 encode/decode
s1 = 'alex'
# str ---> bytes encode 编码
b1 = s1.encode('utf-8')
print(b1)
#bytes---> str decode 解码
s2 = b1.decode('utf-8')
print(s2)
输出
b'alex'
alex
第2章 集合
2.1 特点
l 每个元素必须是不可变类型(可hash,可作为字典的key)
l 没有重复的元素,去重
l 无序,常用关系测试
2.2 【重点】作用:去重
符号一览表
符号 |
定义 |
| |
合集 |
& |
交集 |
- |
差集 |
^ |
对称差集 |
== |
相同集合 |
>,>= ,<,<= |
父集,子集 |
练习:
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}
#求出即报名python又报名linux课程的学员名字集合
print(pythons & linuxs)
#求出所有报名的学生名字集合
print((pythons | linuxs))
print(len(pythons | linuxs))
#求出只报名python课程的学员名字
print(pythons - linuxs)
#求出没有同时这两门课程的学员名字集合
print(pythons ^linuxs)
输出
C:\python3\python.exe D:/python/untitled/two_day.py
{'wupeiqi', 'gangdan'}
{'biubiu', 'gangdan', 'alex', 'oldboy', 'wupeiqi', 'yuanhao', 'egon'}
7
{'egon', 'biubiu', 'yuanhao', 'alex'}
{'biubiu', 'oldboy', 'alex', 'egon', 'yuanhao'}
2.3 常用操作
2.3.1 删除
sl={1,2,3,'a',4}
print(sl.pop())
sl.remove('a')
sl.remove('as')
print(sl)
输出:
Traceback (most recent call last):
File "D:/python/untitled/two_day.py", line 233, in <module>
sl.remove('as')
KeyError: 'as'
注意:
l pop随机删除,并返回删除的结果
l remove 单纯的删除,不会返回结果,如果删除的元素不在则报错
2.3.2 交集判断-isdisjoint
sl={1,2,3,'a',4}
s2={4,5}
print(sl.isdisjoint(s2))
如果sl和s2没有交集则返回True
2.4 列表转换集合
l1 = {1,2,3,4,52,33,33,4,4,5}
print(set(l1))
输出
C:\python3\python.exe D:/python/untitled2/python_auto/lianxi3.py
{1, 2, 3, 4, 33, 5, 52}
2.5 集合转换列表
set = {1,2,3,4,52,33,33,4,4,5}
print(list(set))
输出
C:\python3\python.exe D:/python/untitled2/python_auto/lianxi3.py
[1, 2, 3, 4, 33, 5, 52]
第3章 深浅copy
3.1 共用内存地址
s1 = [1, 2, 3]
s2 = s1 # 共用一个
s1.append(666)
print(s1, s2)
输出
[1, 2, 3, 666] [1, 2, 3, 666]
[1, 2, 3, [11, 22, 666]] [1, 2, 3, [11, 22, 666]]
3.2 copy参数
s1 = [1, 2, 3]
s2 = s1.copy()
s1.append(666)
print(s1, s2)
输出
[1, 2, 3, 666] [1, 2, 3]
3.3 copy特性
u 浅copy:使用copy参数,第一层各自独立,第二层开始,共用一个内存地址
u 深copy:调用copy模块,无论多少层,都是相互独立的
3.3.1 例:浅copy
s1 = [1, 2, 3,[11,22]]
s2 = s1.copy()
s1[-1].append(666)
print(s1, s2)
print(id(s1), id(s2))
print(id(s1[-1]), id(s2[-1]))
输出
s1 = [1, 2, 3,[11,22]]
s2 = s1.copy()
s1[-1].append(666)
print(s1, s2)
print(id(s1), id(s2))
print(id(s1[-1]), id(s2[-1]))
3.3.2 例:深copy
import copy
##第一层追加
s1 = [1, 2, 3,[11,22]]
s2 = copy.deepcopy(s1)
s1.append(666)
print(s1, s2)
##第二层追加
s1 = [1, 2, 3,[11,22]]
s2 = copy.deepcopy(s1)
s1[-1].append(666)
print(s1, s2)
输出
[1, 2, 3, [11, 22], 666] [1, 2, 3, [11, 22]]
[1, 2, 3, [11, 22, 666]] [1, 2, 3, [11, 22]]
3.3.3 切片浅copy
1)第一层追加
s1 = [1, 2, 3, [11, 22]]
s2 = s1[:]
s1.append(666)
print(s1, s2)
输出
C:\python3\python.exe "D:/python/untitled2/python_3/05 深浅copy.py"
[1, 2, 3, [11, 22], 666] [1, 2, 3, [11, 22]]
2)第二层追加
s1 = [1, 2, 3, [11, 22]]
s2 = s1[:]
# s1.append(666)
s1[-1].append(666)
print(s1, s2)
输出
C:\python3\python.exe "D:/python/untitled2/python_3/05 深浅copy.py"
[1, 2, 3, [11, 22, 666]] [1, 2, 3, [11, 22, 666]]
第4章 文件操作
4.1 文件打开方式-open
解释:open()调用的内置函数,内置函数调用的系统内部的open,
#!/usr/bin/env python
# -*- coding:utf-8 -*-
f1 = open(r'd:/superman.txt', encoding='utf-8', mode='r')
print(f1.read())
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
天空没有留下我的痕迹,但我已飞过.....
______泰戈尔
4.2 文件句柄
u 解释:f1 文件句柄,又称之为(f,file,file_hander,f_h....)
u 说明:一切对文件进行的操作都是基于文件句柄f1.
u 执行流程:
1.打开文件,产生文件句柄。
2.对文件句柄进行操作。
3.关闭文件句柄。
u 报错原因:
1.编码错误编码不一致,前面加r或者在加上// 进行转义解决路径问题
UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 15: illegal multibyte sequence
2.路径错误。
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
3.\未转义。
r'd:/superman.txt',
'd://superman.txt',
4.3 读r
4.3.1 默认:方式全部读出来
f1 = open('log1', encoding='utf-8')
content = f1.read()
print(content)
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
111666333222
4.3.2 read(n):读一部分
f1 = open('log1', encoding='utf-8')
content = f1.read(3)
print(content)
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
111
4.3.3 rb
解释:
u r 模式 read(n) n 按照字符读取。
u rb 模式 read(n) n 按照字节读取。
例:
f1 = open('log1', mode='rb')
print(f1.read(3).decode('utf-8'))
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
我
例:
f1 = open('log1', mode='rb')
print(f1.read(4).decode('utf-8'))
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
Traceback (most recent call last):
File "D:/python/untitled2/python_3/06 文件操作.py", line 27,
4.3.4 readline()
解释:按行读取
f1 = open('log1', encoding='utf-8')
print(f1.readline())
print(f1.readline())
print(f1.readline())
f1.close()
输出
文件操作.py"
111666333222
12321321321
21312321321321
4.3.5 readlines()
解释:全部读出来并显示为列表的形式
f1 = open('log1', encoding='utf-8')
print(f1.readlines())
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
['111666333222\n', '12321321321\n', '21312321321321']
4.3.6 for 循环
f1 = open('log1', encoding='utf-8')
for line in f1:
print(line)
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
111666333222
12321321321
21312321321321
4.3.7 r+ r+b
解释:r+ 读写规则先读后写
f1 = open('log1', encoding='utf-8', mode='r+')
print(f1.read())光标读到最后
f1.write('777')在最后插入777
print(f1.read())光标移动到最后所以这一次读没有输出
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
6664546789
12321321321
21312321321321#并没有777而是再源文件中生成
4.4 写:w
u 没有文件,新建文件写入内容。
u 有原文件,先清空内容,在写入新内容。
例:
f1 = open('log2', encoding='utf-8', mode='w')
f1.write('fdksagdfsa')
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
Process finished with exit code 0
清空源文件,生成新的字符串fdksagdfsa
4.4.1 wb
4.4.2 图片的读写
f1 = open('1.jpg', mode='rb')
content = f1.read()
print(content)
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x02\x01\x01\x01\x01\x01\x02\x01\x01\x01\x02\x02\x02\x02\x02\x04\x03\x02\x02\x02\x02\x05\x04\x04\x03\x04\x06\x05\x06\x06\x06\x05\x06\x06\x06\x07\t
4.4.3 图片的写入
f1 = open('1.jpg', mode='rb')
content = f1.read()
f2 = open('2.jpg', mode='wb')
f2.write(content)
f1.close()
f2.close()
图片二被清空,图片1写入图片2
4.4.4 w+
解释:先读后写
f1 = open('log2', encoding='utf-8', mode='w+')
f1.write('superman')
f1.seek(0)
print(f1.read())
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
superman
先清空在写入Superman
4.4.5 w+b
4.5 追加:a
解释 :没有文件,新建文件写入内容
f1 = open('log3', encoding='utf-8', mode='a')
f1.write('alex 666')
f1.write('\nalex 666')
f1.close()
输出
alex 666
alex 666
4.5.1 ab
解释:b参数的操作都是非文字类的文件
4.5.2 a+
解释:在文件末尾追加写入
f1 = open('log3', encoding='utf-8', mode='a+')
f1.write('python')
f1.seek(0)
print(f1.read())
f1.close()
输出
C:\python3\python.exe "D:/python/untitled2/python_3/06 文件操作.py"
alex 666
alex 666python
4.5.3 a+b
4.6 其他操作方法
4.6.1 常用参数列表
常用参数 |
解释 |
readable |
是否可读 |
writable |
是否可写 |
f1.seek(12) |
任意调整 |
f1.seek(0,2) |
光标调整到最后 |
f1.seek(0) |
光标调整到开头 |
f1.tell() |
告诉光标的位置 |
f1.truncate(3) |
按照字节对原文件进行截取必须在a 或 a+ 模式 |
例
f1 = open('log3', encoding='utf-8', mode='a+')
print(f1.readable())
print(f1.writable())
f1.close()
输出
True
True
例:
f1 = open('log3', encoding='utf-8', mode='a')
print(f1.readable())
print(f1.writable())
f1.close()
输出
True
False
4.6.2 with open
解释:不用关闭文件句柄
with open('log1', encoding = 'utf-8') as f1,\
open('log2', encoding='utf-8', mode='w') as f2:
con f2.write(content) tent = f1.read()
4.6.3 更改文件
u 以读模式打开原文件。
u 以写的模式打开一个新文件。
u 将原文件读出按照要求修改将修改后的内容写入新文件
u 删除原文件。
u 将新文件重命名原文件。
例:
import os
with open('file', encoding='utf-8') as f1,\
open('file.bak', encoding='utf-8', mode='w') as f2:
old_content = f1.read()
new_content = old_content.replace('alex', 'SB')
f2.write(new_content)
os.remove('file')
os.rename('file.bak', 'file')
4.6.4 版本升级
import os
with open('file', encoding='utf-8') as f1,\
open('file.bak', encoding='utf-8', mode='w') as f2:
for line in f1:
new_line = line.replace('SB','alex')
f2.write(new_line)
os.remove('file')
os.rename('file.bak', 'file')
第5章 函数
5.1 初识函数
u 目的:解决代码重复性问题,提高可读性
u 函数格式:
'''
def 关键字 函数名():
函数体
函数执行:函数名()
函数:以功能为导向。
'''
5.2 函数返回值
5.2.1 return
u 终止函数。
u 给函数的执行者返回值
return 或者 return None
return 单个值
return 多个值 会将多个值放到一个元组中,将元组返回个函数的执行者
5.2.2 例:
s = 'lkfjsjulkjdgjdsf'
def my_len():
count = 0
for i in s:
count += 1
return count
print(my_len())
5.3 函数传参
5.3.1 形参
解释:形式参数
def my_len(argv): # 形式参数 ,形参
count = 0
for i in argv:
count += 1
return count
l1 = [1, 2, 3, 4, 5]
# my_len(s) # 实际参数, 实参
print(my_len(l1))
输出
C:\python3\python.exe "D:/python/untitled2/python_3/07 函数的初识.py"
5
5.3.2 实参
u 位置参数 按照顺序一一对应
u 关键字传参 一一对应。
u 混合参数。(位置参数,关键字参数) 关键字参数必须在位置参数后面
u 动态参数。 *args, **kwargs 万能参数
args:所有的位置参数,放在一个元组中。
kwargs:所有的关键字参数,放在一个字典中。
5.3.3 例:位置参数
def func1(a, b, c):
print(a, b, c)
func1(1, 2, 'alex')
输出
C:\python3\python.exe "D:/python/untitled2/python_3/07 函数的初识.py"
1 2 alex
5.3.4 例:关键字参数
def func2(a, b):
print(a, b)
func2(b=2, a=3)
输出
C:\python3\python.exe "D:/python/untitled2/python_3/07 函数的初识.py"
3 2
5.3.5 例:混合参数
def func3(a, b, c, d):
print(a, b, c, d)
func3(1,2,d=3,c=5)
输出
C:\python3\python.exe "D:/python/untitled2/python_3/07 函数的初识.py"
1 2 5 3
5.3.6 例:比较大写输出最大
def max(a, b): return a if a > b else b
ret = 1 if 2 > 1 else 6
print(max(10, 2))
输出
C:\python3\python.exe "D:/python/untitled2/python_3/07 函数的初识.py"
10
5.3.7 例:动态参数
u *args表示单个元素
u **kwargs表示字典
例1)
def func3(*args, **kwargs): #函数的定义的时候 * 代表聚合。
print(args)
print(kwargs)
func3(1, 2, 3, 'alex', c=6, name='wusir', age='21')
输出
C:\python3\python.exe "D:/python/untitled2/python_3/07 函数的初识.py"
(1, 2, 3, 'alex')
{'c': 6, 'name': 'wusir', 'age': '21'}
例2)
def func3(*args, **kwargs): #函数的定义的时候 * 代表聚合。
print(args)
print(kwargs)
func3(*[1, 2, 3],*(22, 33)) #函数的执行的时候 * 代表打散。
输出
C:\python3\python.exe "D:/python/untitled2/python_3/07 函数的初识.py"
(1, 2, 3, 22, 33)
{}
例3)
def func3(*args, **kwargs): #函数的定义的时候 * 代表聚合。
print(args)
print(kwargs)
func3(**{'name':"alex"},**{'age':23}) #函数的执行的时候 * 代表打散。
输出
C:\python3\python.exe "D:/python/untitled2/python_3/07 函数的初识.py"
()
{'name': 'alex', 'age': 23}
例4)
def func3(*args, **kwargs): #函数的定义的时候 * 代表聚合。
print(args)
print(kwargs)
func3(1, 2, 3, 22, 33) #函数的执行的时候 * 代表打散。
输出
C:\python3\python.exe "D:/python/untitled2/python_3/07 函数的初识.py"
(1, 2, 3, 22, 33)
{}
第6章 拾遗
6.1 'is'/'id'/'=='区别
l == 数值比较
l is 比较的是内存地址
l id 测试的是内存地址
6.2 小数据池
解释:在一定范围内的数字或者字符串定义的变量都放在一个内存地址中,节省内存空间
l int: [-5:256]长度都是存放在一个地址池中
l str:不能含有特殊字符;单个元素*int(20)不能超过20;一般情况下设置的字符串变量都在一个小数据池中
例1:涉及内存地址的都在在终端中测试
例2:
python函数基础(3)的更多相关文章
- 《转》Python学习(17)-python函数基础部分
http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...
- Python 函数基础、有序集合、文件操作(三)
一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...
- python函数基础学习
函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定 义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...
- 10分钟学会Python函数基础知识
看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...
- Python函数基础和函数参数
函数的定义和函数的调用 return的作用 三种参数的定义 常用的内置函数 len() 函数基础 函数的定义 def 函数名(参数): pass return 表达式 pass在这里表示什么都没有,不 ...
- python函数基础
一.基础 函数的定义 def 函数名(参数): ... 函数体 ... 返回值 #如果函数执行完毕也没有return语句时,自动return None. 空函数 如果想定义一个什么事也不做的空函数,可 ...
- python 函数基础介绍
函数是对程序逻辑进行结构化或过程化的一种编程方法.能将整块代码巧妙地隔离成易于管理的小块,把重复代码放在函数中而不是进行大量的拷贝. 一.函数创建 def 函数创建格式如下: def function ...
- Python函数基础学习(定义、函数参数、递归函数)
1.本程序是测试函数的基础.函数的参数.递归函数的测试. 函数的参数有: 必选参数.默认参数.可变参数.命名关键字参数和关键字参数 #!/usr/bin/python # -*- coding: ut ...
- python函数基础 与文件操作
函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...
- 4.python函数基础
一.函数 1.函数简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...
随机推荐
- mongo 原理 Replica Set Oplog
[客户的写请求全部发送至主节点] Primary. The primary receives all write operations. Secondaries. Secondaries replic ...
- Sequelize入门一
最近刚开始接触Sequelize,当中遇到不少坑,所以想写篇Sequelize入门和大家分享,避免有道友和我一样爬坑. 学习sequelize的初衷是想解决SQL注入,它支持MySQL, SQLite ...
- ios常用到的第三方库
在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率:同时,也可以从它们的源代码中学习到很多有用的东西. Reachability 检测网络连接 用来检查网 ...
- Mybatis中的大于等于和小于等于
mybatis中可以直接使用>或<:但是不能直接使用>=或<=; 第一种写法(1): 原符号 < <= > >= & ' " 替换符号 ...
- linux命令启动服务(tomcat服务或者jar包)
启动tomcat: 1.方式一:直接启动 ./startup.sh 2.方式二:nohup ./startup.sh & 启动后,关闭当前客户端连接,重新启动一个查看是 否已经启动 启动jar ...
- POJ3268 Silver Cow Party —— 最短路
题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total ...
- SQL Server 数据库备份策略,第一周运行失败的原因
一般生产库,采用 每10分钟备份Log,每天备份Diff,每周备份Full的策略. 同时存在异地备份.异地备份可使用SQL Server本身的cmdshell存储过程,调用系统命令. 在为新数据库,建 ...
- javascript XMLHttpRequest 对象的open() 方法参数说明
下文是从w3c上摘录下来的,其中参数 method 说明的很简短,不是很理解,所以又找了些资料作为补充.文中带括号部分. XMLHttpRequest.open() 初始化 HTTP 请求参数 语法o ...
- html5--6-41 CSS背景
html5--6-41 CSS背景 实例 学习要点 掌握CSS背景属性的使用 元素的背景属性: background 简写属性,作用是将背景属性设置在一个声明中. background-attachm ...
- lucene倒排索引瘦身的一些实验——merge的本质是减少cfx文件 变为pos和doc;存储term vector多了tvx和tvd文件有337M
store NO 压缩后的原始数据 原始数据大小 索引大小 索引时间 单词搜索时间 266 791 594 176 0.2 文件组成见后 运行forceMerge(3)后 merge的本质是减少cfx ...