玩蛇(Python)笔记之基础Part3

玩蛇(Python)笔记之基础Part1

一.集合

1.set 无序,不重复序列 {}创建,直接写元素

2.set功能 __init__()构造方法,,使用强制转换就会调用此方法

1 set1 = {‘year‘, ‘jiujiujiu‘}
2 print(type(set1))
3 # 创建集合
4 s = set()  # 创建空集合
5 li = [11, 22, 11, 22]
6 s = set(li)

set

3.集合的基本操作

 1 # 操作集合
 2 s1 = set()
 3 s1.add(123)  # 添加元素
 4 s1.clear()  # 清空set
 5 s2 = s1.copy()  # 浅拷贝
 6 s1.difference(s2)  # s1中存在s2中不存在的元素
 7 s1.symmetric_difference(s2)  # 对称差集 去掉两个set中相同的元素
 8 s1.difference_update(s2)  # 同difference 不过会更新s1
 9 s1.symmetric_difference_update(s2)  # 同symmetric_difference 不过会更新s1
10 s1.discard(1111)  # 移除指定元素 不存在不报错
11 s1.remove(1111)  # 移除指定元素 不存在报错
12 s1.pop()  # 移除随机元素并且获取此元素
13 s1.intersection(s2)  # 取交集
14 s1.intersection_update(s2)  # 取交集并更新
15 s1.issubset(s2)  # 是否为子序列
16 s1.issuperset(s2)  # 是否为父序列
17 s3 = s1.union(s2)  # 取并集
18 s1.update(s2)  # 接收一个可迭代对象循环调用add()

set cmd

4.关于对象的内部特殊函数

1 li = [11, 22, 33]  # list __init__
2 li()  # list __call__
3 li[0]  # list __getitem__
4 li[0] = 123  # list __setitem__
5 del li[1]  # list __delitem__

__xxx__

5.set 小练习 更新字典

 1 old_dic = {
 2     ‘#1‘: 4,
 3     ‘#2‘: 4,
 4     ‘#4‘: 2,
 5 }
 6 new_dic = {
 7     ‘#1‘: 4,
 8     ‘#2‘: 4,
 9     ‘#3‘: 2,
10 }
11 new_set = set(new_dic.keys())
12 old_set = set(old_dic.keys())
13
14 remove_set = old_set.difference(new_set)
15 add_set = new_set.difference(old_set)
16 update_set = new_set.intersection(old_set)
17
18 #再根据以上集合 来更新字典

update dic

二.函数

1.什么是函数

1 def f1():  # def关键字,创建函数 函数名 ()
2     pass  # 函数体 返回值 默认返回值是none

func

2.来个发送邮件函数

 1 def sendMail():
 2     import smtplib
 3     from email.mime.text import MIMEText
 4     from email.utils import formataddr
 5     try:
 6         msg = MIMEText(‘内容‘, ‘plain‘, ‘utf-8‘)
 7         msg[‘From‘] = formataddr(["YEAR", ‘[email protected]‘])
 8         msg[‘To‘] = formataddr(["揍你", ‘[email protected]‘])
 9         msg[‘Subject‘] = "主题"
10
11         server = smtplib.SMTP("smtp.gmail.com", 25)
12         server.login("[email protected]", "year93926")
13         server.sendmail(‘[email protected]‘, [‘[email protected]‘, ], msg.as_string())
14         server.quit()
15     except:
16         return False
17     else:
18         return True
19
20
21 ret = sendMail()
22 if ret:
23     print(‘OK‘)
24 else:
25     print(‘faild‘)

sendemail

3.函数变量

  普通参数(严格按照顺序将实际参数传递给形式参数)

  默认参数(必须放置到参数列表的最后)

  指定参数(将实际参数赋值给指定的形式参数)

  * 动态参数 默认将传入的参数放入一个元组中 f(*[11,22,3,4])每一个元素

  ** 动态参数2 默认将传入的参数放入一个字典中 f(**[‘1‘:11,‘asdf‘:123])

  万能参数 f(*args,**kwargs) *在前**在后

  函数的参数进行传递的时候是引用还是值 是引用!!!!

  全局变量 作用域问题 所有作用域都可读!! 重新赋值得加上global关键词 特殊的是列表字典可修改但不能重新赋值因为是引用 全局变量大写约定俗成

 1 def sendMail1(xxoo, content, xx=‘biubiubiu‘):  # 形式参数和默认参数 默认参数必须要放到参数列表最后!!!
 2     import smtplib
 3     from email.mime.text import MIMEText
 4     from email.utils import formataddr
 5     try:
 6         msg = MIMEText(content, ‘plain‘, ‘utf-8‘)
 7         msg[‘From‘] = formataddr(["YEAR", ‘[email protected]‘])
 8         msg[‘To‘] = formataddr(["揍你", ‘[email protected]‘])
 9         msg[‘Subject‘] = "主题"
10
11         server = smtplib.SMTP("smtp.gmail.com", 25)
12         server.login("[email protected]", "year93926")
13         server.sendmail(‘[email protected]‘, [xxoo, ], msg.as_string())
14         server.quit()
15     except:
16         return False
17     else:
18         return True
19
20
21 ret = sendMail1(‘[email protected]‘, ‘SB‘)  # 普通参数 默认参数
22
23 while True:
24     em = input("输入邮箱地址:")
25     ret1 = sendMail1(em, ‘SB‘)
26     if ret:
27         print(‘ok‘)
28     else:
29         print(‘doubi‘)
30
31 sendMail1(content=‘jjj‘, xxoo=‘jjj‘)  # 指定参数传参
32
33
34 def f2(*args):  # 将接收的n个参数放到一个元组李里
35     print(args)
36
37
38 f2(11, 22, 33, 44, ‘asdfasdf‘)
39 li = [11, 22, 33, 44, 55, ‘asdfasdf‘]
40 f2(li)  # 将此列表作为元组的一个元素
41 f2(*li)  # 将此列表所有元素作为元组的一个元素 *其实是对li做一个循环将每个元素分离出来
42
43
44 def f3(**args):  #
45     print(args, type(args))
46
47
48 f3(name=‘year‘)  # 传入键值对作为字典
49 dic = {‘name‘: ‘year‘, ‘age‘: 23}
50 f3(kk=dic)  # 将dic作为一个元素
51 f3(**dic)  # **可以循环将dic里的每一个键值对分离出来
52
53
54 def f4(*args, **kwargs):  # 万能参数
55     print(args)
56     print(kwargs)
57
58
59 # string的format格式化输出
60 a = ‘i am {0},age{1}‘.format(*["alex", 234])
61 b = ‘i am {name},age{age}‘.format(**{‘name‘: ‘year‘, ‘age‘: 123})
62
63
64 # 函数的参数进行传递的时候是引用还是值  是引用!!!!
65 def f5(list1):
66     list1.append(999)
67
68
69 li = [111, 222, 333, 444]
70 f5(li)
71 print(li)
72
73 # 全局变量
74 name = ‘year‘
75
76
77 def f6():
78     # name = ‘jiujiujiu‘
79     global name
80     name = ‘jiujiujiu‘
81     # 特殊情况 列表字典
82     li.append(‘adsf‘)  # 可修改
83     global li  # 重新赋值得用global
84     # li = ‘jiujiujiu‘
85
86
87 print(name)

func

  4.函数式编程小练习

 1 # -*- coding:utf-8 -*-
 2 # Author:YEAR
 3
 4
 5 def login(user, pwd):
 6     """
 7     用于用户登录
 8     :param user: 用户输入的用户名
 9     :param pwd: 用户输入的密码
10     :return: true表示成功 False表示失败
11     """
12     f = open("db", ‘r‘)
13     for line in f:
14         line_list = line.strip().split("|")
15         if line_list[0] == user and line_list[1] == pwd:
16             return True
17     return False
18
19
20 def register(user, pwd):
21     """
22     用于用户注册
23     :param user: 用户名
24     :param pwd: 密码
25     :return: True注册成功
26     """
27     f = open("db", ‘a‘)
28     temp = user + "|" + pwd
29     f.write(temp)
30     return True
31
32
33 def main():
34     t = input("1:登录;2:注册")
35     if t == ‘1‘:
36         user = input("请输入用户名")
37         pwd = input("请输出密码")
38         r = login(user, pwd)
39         if r:
40             print("登录成功")
41         else:
42             print("登录失败")
43     else:
44         user = input("请输入用户名")
45         pwd = input("请输出密码")
46         r = register(user, pwd)
47
48
49 main()

func

三.三元运算lambda表达式内置函数

  1.三元运算,三目运算 简单的ifelse可以用此方式

  2.lambada表达式 简单的function可以用此方式

  3.一些内置函数

 1 name = ‘year‘ if 1 == 1 else ‘SB‘
 2 # 1.2lambada表达式 简单的function可以用此方式
 3 f2 = lambda a1: a1 + 100
 4 # 2.1内置函数
 5 # abs()绝对值
 6 n = abs(-1)
 7 # all() any()  0,None 负数 空字符串 空列表 空字典 空元组是false
 8 # all接收一个可迭代的对象 有一个是假就是假 所有为真才是真 any为任何一个为真就是真
 9 n = all([11, 22, 33, 44, ‘‘])
10 n = any([11, 22, 33, 44, 55])
11
12
13 # ascii() #自动执行对象的__repr__方法
14 class Foo:
15     def __repr__(self):
16         return "111"
17
18
19 n = ascii(Foo())
20
21 # bin() oct() hex() 分别接收十进制转换成2进制8进制16进制
22 print(bin(5))
23 print(oct(7))
24 print(hex(9))
25 # utf-8编码一个汉字三个字节 gbk一个汉字两个字节
26 # 字符串转换成字节类型 用bytes()
27 print(bytes(‘周‘, encoding=‘utf-8‘))
28 # 字节转换成字符串 用str
29 print(str(bytes(‘周‘, encoding=‘utf-8‘), encoding=‘utf-8‘))

qqq

四.文件操作

  

 1 # -*- coding:utf-8 -*-
 2 # Author:YEAR
 3 # 打开文件
 4 f1 = open(‘db‘, ‘r‘, encoding=‘utf-8‘)  # 只读 encoding参数告诉python转化编码
 5 data = f1.read()
 6 print(data, type(data))  # 读出的为字符串类型,python默认做了编码转换将字节转换成了字符串,,
 7 f1.close()
 8 f1 = open(‘db‘, ‘rb‘, encoding=‘utf-8‘)  # b表示2进制打开不要python做编码转换,写也一样
 9 data = f1.read()
10 print(data, type(data))  # 读出的类型为字节类型
11 f1.close()
12
13 f2 = open(‘db‘, ‘w‘)  # 只写 先清空源文件
14 f3 = open(‘db‘, ‘x‘)  # 如果文件存在报错,,不存在创建并写内容
15 f5 = open(‘db‘, ‘a‘)  # 追加
16 # +号 文件以可读可写打开
17 f1 = open(‘db‘, ‘r+‘,
18           encoding=‘utf-8‘)  # 文件位置指针 打开时在最开始 读完后 指针在最后,,再去写的时候会写在最后 python只要你读指针必会变到最后!! 所以写一般用r+不用a+ 也不用w+ w会清空
19
20 data = f1.read()  # read会按模式去读!!!
21 print(data, type(data))
22 f1.seek(1)  # seek会强行调整文件位置指针位置, 在其中某个位置写会覆盖其后的内容!!!! 永远是按字节方式找位置
23 f1.read(1)
24 f1.tell()  # 获取当前文件指针位置
25 f1.seek(f1.tell())  # 调整指针到指定位置
26 f1.write(‘888‘)
27 f1.close()
28
29 # 操作文件
30 f2.read()  # 无参数读全部 如果有参数 b按字节无b按字符
31 f2.tell()  # 获取当前指针位置
32 f2.seek(1)  # 跳转指针位置 永远按字节
33 f2.write(‘ss‘)  # 打开方式有关 有b只能写字节 无b写字符串
34 f2.fileno()  # 文件的数字形式描述符
35 f2.flush()  # 强刷 将写的内容强制刷新到硬盘上 close()会自动刷新
36 f2.isatty()  # 是否是tty设备
37 f2.readable()  # 是否可读
38 f2.seekable()  # 是否可移动指针
39 f2.readline()  # 只读一行
40 f2.truncate()  # 从文件指针位置截断数据 后面的删除
41
42 for line in f2:  # 迭代文件 一行一行
43     pass
44 # 关闭文件
45 f1.close()
46 with open(‘db‘, ‘a‘) as f4:
47     pass
48 with open(‘db‘, ‘a‘) as f6, open(‘db2‘, ‘a‘) as f7:
49     for line1 in f6:
50         new_str = line1.replace(‘alex‘, ‘st‘)
51         f7.write(new_str)
52     pass

file

时间: 2024-10-13 02:43:19

玩蛇(Python)笔记之基础Part3的相关文章

玩蛇(Python)笔记之基础Part2

玩蛇(Python)笔记之基础Part2 一.列表 1.列表 别的语言叫数组 python牛逼非要取个不一样的名字 1 age = 23 2 name = ["biubiubiu", "jiujiujiu", 22, age] 3 # namecopy = name 4 # namecopy.pop() 5 print(name) 6 # print(namecopy) List 2.列表取值 正常index 从零开始,,取倒数加负号 倒数第一就是[-1] 3.列表

Python笔记一 基础概念与基础认识

简介 python的创始人为吉多·范罗苏姆. 在10月份TIOBE排行榜上,python为第五,占有率为3.775%. python是一门动态解释型的强类型定义语言. 执行.py的时候是由python解释器,逐行编译→解释,在运行. PyCodeObject 是编译结果,运行完成后,保存到pyc中,以便下次直接运行pyc文件 动态类型 是指运行期间才去做数据类型检查的语言. 强类型定义语言 是指一旦一个变量被指定了某个数据类型,不经过强制转换,永远都是这个类型. 优点: 优雅.明确.简单. 开发

python笔记二 基础

10/24 对于Python,一切事物都是对象,对象基于类创建,对象所有的功能都是去类里面找的 变量名 = 对象 (值)                              重复的功能 创建一个类,然后对象去引用   整数 age = 18 print(type(age)) <class 'int'> 如果是其他的类型,会在下面显示类地址. age.__abs__() all_item = 95 pager = 10 result = all_item.__divmod__(10) pr

inking Python 笔记(1) : 基础

1. type()可以查看变量的类型. >>> type(12.1) <class 'float'> >>> type('hello') <class 'str'> >>> type(2) <class 'int'> >>> type('2') <class 'str'> 2. Python的变量名支持数字.字母及下划线,但不能以数字开头. 3. 表达式及声明. >>>

玩蛇记之用python实现易宝快速支付接口

玩蛇记之用python实现易宝快速支付接口 现在很多这种快速支付的通道,易宝支持的通道算是很全面的,正好最近需要集成易宝的支付通道到平台中,所以写一贴来记录一下,顺便鄙视一下国内的支付平台,api的支持做得很是差劲,易宝的例子代码居然是错的,这么囧的事情都能出现,可见国内的竞争还是不够激烈啊. 进入主题,今天的任务是要打通支付和支付通知接口,根据一般性规则,通过http协议的支付接口的一般设计都是,通过N个field或者查询参数传递数据,其中一个是验证串,防止篡改数据,每个申请了支付接口的用户都

01-Python学习笔记-基础语法

Python标识符 -d           在解析时显示调试信息 -O           生成优化代码 ( .pyo 文件 ) -S           启动时不引入查找Python路径的位置 -v            输出Python版本号 -X           从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时. -c cmd     执行 Python 脚本,并将运行结果作为 cmd 字符串. file           在给定的python文件执行python脚本. P

智普教育Python视频教程之入门基础篇,python笔记

智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostname="www.google.com" 结果运行后总是告诉我NameError: name 'socket' is not defined 哪位帮我分析一下,怎么改才对 没用过socket,不过你试着在第一行加入 import socket C:\>notepad somefile.

嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&amp;seid=10211084839195730432#page=25 中的38-41讲

# -*- coding: utf-8 -*-#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&seid=10211084839195730432#page=25 中的38-41讲# 文件# 文件是存储在外部介质上的数据或信息的集合# 文件是有序的数据序列# 常用的编码# ASCII码是标准化字符集# 7个二进制位编码# 表示128个字符 # ord() 将字符转化为ASCII码, chr() 将AS

嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&amp;seid=15873837810484552531 中的15-22讲

#coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=15873837810484552531 中的15-22讲#数字类型的关系#三种类型存在一种逐渐扩展的关系:#整数 ->浮点数 ->复数(整数是浮点数的特殊,浮点数是复数的特殊)#不同数字类型之间可以进行混合运算,运算后生成的结果为最宽类型.如整数+浮点数=浮点数#三种类型可以相互转换#函数:int(), fl