第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. hadoop 一些文件操作

    在HDFS上面,FileSystem创建目录 复制本地文件到HDFS 获取集群中的节点

  2. bash命令中的两个横

    它是一种标记.命令中的连续的两个横表明选项已经结束了,两个横后面的内容就是参数了,不再是选项了.

  3. Difference between exit() and sys.exit() in Python

    Difference between exit() and sys.exit() in Python - Stack Overflow https://stackoverflow.com/questi ...

  4. log4j 路径环境变量配置和log4j加载配置

    1.lo4j日志路径从环境变量读取,log4j.xml配置如下: 具体配置如下: log4j.appender.R.Encoding=UTF-8 log4j.appender.R=org.apache ...

  5. Memory cycles about Block

    Block keeps a strong point to all object referenced in side of them, so all object will stay in heap ...

  6. 解决Javascript md5 和 Java md5 中文加密后不同问题

    Javascript md5 和 Java md5 带中文字符加密结果不一致,可以通过编码进行转化. javascript可以使用encodeURLComponent将中文先转化一次再进行MD5加密. ...

  7. UIPageControll 的属性和用法

    UIPageControll 是继承于UIControl的一个IOS系统UI控件,可以提供给开发者设计分页效果的功能. 初始化方法 UIPageControl * page = [[UIPageCon ...

  8. YTU 2442: C++习题 矩阵求和--重载运算符

    2442: C++习题 矩阵求和--重载运算符 时间限制: 1 Sec  内存限制: 128 MB 提交: 1457  解决: 565 题目描述 有两个矩阵a和b,均为2行3列.求两个矩阵之和.重载运 ...

  9. [原创]java获取word里面的文本

    需求场景 开发的web办公系统如果需要处理大量的Word文档(比如有成千上万个文档),用户一定提出查找包含某些关键字的文档的需求,这就要求能够读取 word 中的文字内容,而忽略其中的文字样式.表格. ...

  10. php判断某个变量是否存在

    sset— 检测变量是否设置,empty — 检查一个变量是否为空(是否存在也检测了,不存在或为空返回true)