第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)的更多相关文章

  1. 《转》Python学习(17)-python函数基础部分

    http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...

  2. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

  3. python函数基础学习

    函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定  义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...

  4. 10分钟学会Python函数基础知识

    看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...

  5. Python函数基础和函数参数

    函数的定义和函数的调用 return的作用 三种参数的定义 常用的内置函数 len() 函数基础 函数的定义 def 函数名(参数): pass return 表达式 pass在这里表示什么都没有,不 ...

  6. python函数基础

    一.基础 函数的定义 def 函数名(参数): ... 函数体 ... 返回值 #如果函数执行完毕也没有return语句时,自动return None. 空函数 如果想定义一个什么事也不做的空函数,可 ...

  7. python 函数基础介绍

    函数是对程序逻辑进行结构化或过程化的一种编程方法.能将整块代码巧妙地隔离成易于管理的小块,把重复代码放在函数中而不是进行大量的拷贝. 一.函数创建 def 函数创建格式如下: def function ...

  8. Python函数基础学习(定义、函数参数、递归函数)

    1.本程序是测试函数的基础.函数的参数.递归函数的测试. 函数的参数有: 必选参数.默认参数.可变参数.命名关键字参数和关键字参数 #!/usr/bin/python # -*- coding: ut ...

  9. python函数基础 与文件操作

    函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...

  10. 4.python函数基础

    一.函数 1.函数简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...

随机推荐

  1. mongo 原理 Replica Set Oplog

    [客户的写请求全部发送至主节点] Primary. The primary receives all write operations. Secondaries. Secondaries replic ...

  2. Sequelize入门一

    最近刚开始接触Sequelize,当中遇到不少坑,所以想写篇Sequelize入门和大家分享,避免有道友和我一样爬坑. 学习sequelize的初衷是想解决SQL注入,它支持MySQL, SQLite ...

  3. ios常用到的第三方库

    在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率:同时,也可以从它们的源代码中学习到很多有用的东西. Reachability 检测网络连接 用来检查网 ...

  4. Mybatis中的大于等于和小于等于

    mybatis中可以直接使用>或<:但是不能直接使用>=或<=; 第一种写法(1): 原符号 < <= > >= & ' " 替换符号 ...

  5. linux命令启动服务(tomcat服务或者jar包)

    启动tomcat: 1.方式一:直接启动 ./startup.sh 2.方式二:nohup ./startup.sh & 启动后,关闭当前客户端连接,重新启动一个查看是 否已经启动 启动jar ...

  6. POJ3268 Silver Cow Party —— 最短路

    题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total ...

  7. SQL Server 数据库备份策略,第一周运行失败的原因

    一般生产库,采用 每10分钟备份Log,每天备份Diff,每周备份Full的策略. 同时存在异地备份.异地备份可使用SQL Server本身的cmdshell存储过程,调用系统命令. 在为新数据库,建 ...

  8. javascript XMLHttpRequest 对象的open() 方法参数说明

    下文是从w3c上摘录下来的,其中参数 method 说明的很简短,不是很理解,所以又找了些资料作为补充.文中带括号部分. XMLHttpRequest.open() 初始化 HTTP 请求参数 语法o ...

  9. html5--6-41 CSS背景

    html5--6-41 CSS背景 实例 学习要点 掌握CSS背景属性的使用 元素的背景属性: background 简写属性,作用是将背景属性设置在一个声明中. background-attachm ...

  10. lucene倒排索引瘦身的一些实验——merge的本质是减少cfx文件 变为pos和doc;存储term vector多了tvx和tvd文件有337M

    store NO 压缩后的原始数据 原始数据大小 索引大小 索引时间 单词搜索时间 266 791 594 176 0.2 文件组成见后 运行forceMerge(3)后 merge的本质是减少cfx ...