Set集合: 无序,不重复的序列

a. 创建

se = {"123,"456" }
print(type(se))
#创建集合方式
s1 = se = {"123,"456" }
s2 = set()
s3 = set([1,2,1,2])

b.功能

set() 创建一个空集合

#e.g. list() 类后面加括号:可用于将tuple变list, 执行list_init_,内部会执行一个for循环,将tuple中每个元素单个添加进新的列表.类似地,列表也可以转换成集合:

li = [1,2,1,2]
s1 = set(li)
c.操作集合
增加
s = set()
s.add(123)
s.add(123)
s.add(123)
#无论增加多少,集合中只有一个123

删除

s.clear()
差集
s1 = {11,22,33}
s2 = {22,33,44}
s3 = s1.difference(s2) #s1中存在,s2中不存在
s3 = s2.difference(s1) #返回{44}

对称差集

s3 = s1.asymmetric_difference(s2)

移除某元素

s1 = {11,22,33}
s3 = s1.discard(111) #不存在该元素不报错
s3 = s1.remove(111) #不存在会报错
ret = s1.pop() #随机移除一个元素,会返回值到ret pop不支持加参数
Intersection交集
s3 = s1.intersection(s2)   #不分前后,找交集
s1.intersection_update(s2) #直接返回给s1,更新s1

Union并集

s2 = s1.union(s2)

增加元素

s1 = {11,22,33}
s1.add(1)
li = [1,2,3,4,5]
s1.update(li) #增加元素可以for循环,可迭代的东西;
批量添加(列表,元组,字符串都可以)

函数function

1.def 关键字,创建函数
2.函数名
3.()
4.函数体:函数定义时,函数体不被执行的,只在调用的时候才执行
5.返回值

#函数中,一旦执行return,执行终止
def f1():
print(123)
return 22
print(111) #will not be executed #如果没有写返回值,返回结果为None

6.参数

形式参数:    def hhh(a)
实际参数 : 实际要代入函数的参数

参数种类:

1.普通参数
2.默认参数(必须放在参数列表最后)
3.指定参数

4.动态参数

*args默认将纯如的参数全部放置在元组中 f1(*[1,2,3,4])
**kwargs默认将纯如的参数全部放置在字典中 f1(**{"k1":"v1","k2":"v2"})

def sendmail(a,b):
print("Your email has been sent:",a,b)
return True
sendmail("alex","andy") #普通参数 def sendmail1(a,b,kk="thx"):
print("Your email has been sent:",a, b,kk)
return True
sendmail1("alex","andy") #默认参数 def sendmail2(a,b):
print("Your email has been sent:",a, b)
return True
sendmail2(a = "alex",b = "thanks") #指定参数

格式与动态参数

#格式化
str. format() #str format 格式化输出
s1 = "I am {0}, now {1} years old".format("Alex", 18)
s2 = "I am {0}, now {1} years old".format(*["Alex", 18])
print(s1,s2) #same reults
def f1(*args):
print(args)
return True
f1(1,23,4,5,6,7,8,9,0,8) #args把所有参数当作一个元素做for循环添加到一个元组
li = [1,23,4,5,6,7,8,9,0,8]
f1(li)
f1(*li) #万能参数
def f1(*args, **kwargs):
print(*args, **kwargs)
return True
dic = {"a":1,"b":2}
f1(li,dic) s1 = "I am {0}, now {1} years old".format("Alex", 18)
s2 = "I am {0}, now {1} years old".format(*["Alex", 18])
print(s1,s2) s1 = "I am {name}, now {age} years old".format(name = "Alex", age = 18)
dic = {'name':'Alex','age':18}
s2 = "I am {name}, now {age} years old".format(**dic)
print(s1,s2)

引用: 函数传参数的时候穿的是引用(不是值)

def f1(a1,a2):
return a1+a2
def f1(a1,a2):
return a1*a2
ret = f1(8,8)
print(ret)
#函数返回值为64,第二个函数覆盖了前一个 def f1(a1):
a1.append(999)
return a1
li = [1,2,3,4] #传参数的时候传的是个引用(不是值)
f1(li) #li变了
print(li)

全局变量,作用域:

没有写到函数中的变量叫全局变量,所有的位置和作用域里面都可读
局部变量,只能在函数自己,优先读函数自己的变量,没有的话全局找
最好不要有很多隐含的全局变量,不然很难追踪;全局变量需要先声明再用

NAME = "Alex"   #表示全局变量

def f1(name,age):
global NAME
name = "Mo" #表示NAME是全局变量,必须加global才能重新赋值
print(name,age)

def f2(name,age):
print(name,age) f1(NAME,9) #改变了全局变量,改为"Mo"
f2(NAME,10) #全局变量仍指向"Alex" #如果全局变量是列表或字典,只能修改,不可重新赋值
#全局变量全要大写
#注意函数之间空两行

登录、注册程序(函数应用)

def login(username,password):
''' For user login purpose
:param: username: 用户输入用户名
:param: password: 用户输入密码
:return: True: 登录成功; False: 登录失败
''' #param:username,password)
#True,login sucessfully
#False, login failed
f = open("db", "r")
for line in f:
line_list = line.split("|")
if line_list[0] == username and line_list[1] == password:
return True
return False def register(username,password):
''' For user register purpose
:param: username: 用户输入用户名
:param: password: 用户输入密码
:return: file to restore new user info
''' f = open("db","a")
temp = "\n" + username + "|" + password
f.write(temp)
f.close()
return f def main():
t = input("1: login; 2: register")
if t == "":
username = input("username:")
password = input("password:")
r = login(username,password)
if r == True:
print("Welcome login")
else:
print("login failed")
elif t == "":
username = input("username:")
password = input("password")
r2 = register(username,password) main()

关于Built-in functions

abs(-39)  #绝对值

# 0 "" [] {} () None are False
print(bool(0)) n = all([1,2,3,4]) #全部为真才为真
print(n)
any([0]) #只要有真则为真 print(bin(9)) #十转二进制, 0b
print(oct(9)) #十转八进制, 0o
print(hex(9)) #十进制转十六进制, 0x #汉字转字节(只要转换的字符串,按照什么编码)
n = bytes("李杰",encoding="utf-8") #utf-8一个汉字占3个字节 gbk:一个汉字占两个字节; 一个字节8位
print(n)
n = bytes("李杰",encoding="gbk")
print(n) #字节转换成字符串
new_str = str(bytes("李杰",encoding="utf-8"),encoding="utf-8")
print(new_str)

配置文件

#打开文件
f = open("db",'r') #只读
f = open("db",'w') #只写,先清空原文件
f = open("db",'x') #文件存在,报错;如果不存在,创建文件并写内容
f = open("db",'a') #追加 #分别加+ 可读可写,会覆盖之前的内容,一般都会用r+
f = open("db",'r+',encoding="utf-8")
#如果打开模式无b,按照字符读取
data = f.read()
f.tell() #tell 当前指针位置
f.seek(1) #指针调到第一个位置,永远按字节找
f.seek(f.tell()) #调整当前指针位置
f.write() #从当前指针位置开始覆盖 #操作文件
read()#无参数,读全部;有参数 data = f.read() #硬盘底层保存二进制,我们得到的是字符串,python自动转换底层二进制到字符串
print(data,type(data)) f = open("db",'r',encoding = "gbk") #如果打开发现乱码,很可能因为 encoding出问题, 尽量统一用utf-8 f = open("db",'rb') #取0101写0101
data = f.read()
print(data,type(data)) #写字符串,让python去做转换
f = open("db",'a')
f.write("李杰")
f.close() #直接写字节
f = open("db",'ab')
f.write(bytes("李杰",encoding="utf-8"))
f.close()

read() # 无参数,读全部;有参数,
# b,按字节
# 无b,按字符
# tell() 获取当前指针位置(字节)
# seek(1) 指针跳转到指定位置(字节)
# write() 写数据,b,字节;无b,字符
# close
# fileno
# flush 强刷
# readline 仅读取一行
# truncate 截断,指针为后的清空
# for循环文件对象 f = open(xxx)
# for line in f:
# print(line) #读一行写一行
with open('db1', 'r', encoding="utf-8") as f1, open("db2", 'w',encoding="utf-8") as f2:
times = 0
for line in f1:
times += 1
if times <=10:
f2.write(line)
else:
break

三目运算与lambda函数

###################三目
if 1 == 1:
name = "Alex"
else:
name = "SB" name = "Alex" if 1 == 1 else "SB" #######################Lambda
def f1(a1):
return a1 + 100 f2 = lambda a1: a1 + 100 #只能写一行:函数名称 lambda 参数: 函数体 ret1 = f1(10)
print(ret1) ret2 = f2(10)
print(ret2)
												

Python笔记总结week3的更多相关文章

  1. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  2. boost.python笔记

    boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...

  3. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  4. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  5. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  6. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  7. python笔记 - day8

    python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...

  8. python笔记 - day7-1 之面向对象编程

    python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...

  9. python笔记 - day7

    python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...

随机推荐

  1. Android从assets目录下读取文件相关

    有一个需求是app的帮助文档是word格式,ios可以直接用webview加载word显示,Android不行.而美工不配合转换成图片,前端没时间把word写成html 没办法,自己搞. 步骤: 1. ...

  2. RK3288 GPIO 输出问题

    cat /sys/kernel/debug/gpio cat /proc/bus/input/devices #define GPIO_BANK0              (0 << R ...

  3. HTML 5 视频

    HTML 5 视频 ======================================================================================= 如今 ...

  4. Android 进程常驻----native保活5.0以下方案推演过程以及代码

    正文: 今天继续昨天,一鼓作气,争取这个礼拜全部写完. 上一篇文章留了一个别人的github链接,他里面的native保活实现方案也是大多数公司采用的方案. 我们先来讲一下他的方案. 他是首先开启一个 ...

  5. Markdown工具之---Typora

    在项目集成阶段中,接口文档是不可避免的,以往的我使用word编辑器编写接口文档,虽然word使用不是很熟练,但是只要在网上下载模板或者自己花时间搞定一个文档格式 基本能一劳永逸.但是还是会有很多问题存 ...

  6. Eclipse通过DDMS打开真机/data/data/目录

    一般真机调试时DDMS里面的File Explorer是不能打开/data 目录的,不过也很容易解决. 1.首先手机要root.这个很简单,网上一大堆资料和软件. 2.仅仅root之后还不行,下载一个 ...

  7. jquery.dataTables--插件使用方法

    本文共四部分:官网 | 基本使用|遇到的问题|属性表 一:官方网站:[http://www.datatables.net/] 二:基本使用:[http://www.guoxk.com/node/jqu ...

  8. TCP 状态详解 -转载

    TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的. 建立一个 TCP 连接 TCP使用 ...

  9. 第三方的图片加载( Android-Universal-Image-Loader)

    Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示. (1).使用多线程加载图片(2).灵活配置Im ...

  10. 让Java和MySQL连接起来

    Java 连接 MySQL 需要驱动包,可以下载菜鸟教程提供的 jar 包:http://static.runoob.com/download/mysql-connector-java-5.1.39- ...