Python笔记总结week3
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的更多相关文章
- Python笔记之不可不练
如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...
- boost.python笔记
boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...
- 20.Python笔记之SqlAlchemy使用
Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...
- Python笔记——类定义
Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- python笔记 - day8
python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...
- python笔记 - day7-1 之面向对象编程
python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...
- python笔记 - day7
python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...
随机推荐
- Maximum Product Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- easyui DataGrid 工具类之 TableUtil class
import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.HashM ...
- sharepoint2013用户切换实现方式
作为一个刚学sharepoint的新人,今天在账号的切换中烦躁无比,不知道有木有人和我一样,sharepoint2013没有了切换用户,真的很不方便,当然了,也不是没有办法加上去,经过本人一个下午的研 ...
- iOS定时器的使用
iOS开发中定时器经常会用到,iOS中常用的定时器有三种,分别是NSTime,CADisplayLink和GCD. NSTimer 方式1 // 创建定时器 NSTimer *timer = [NST ...
- 杀死mapreduce
在做mapreduce的时候,ctrl+c 其实就是在doc命令下杀死了mapreduce显示,后台还是有在运行mapreduce的程序 可以http://namenode.hadoop:8088/ ...
- 【转】Checkpoint--与lazy writer区别
checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存. Checkpoint和lazyW ...
- css-position
值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "top", " ...
- append追加的使用
#!/usr/bin/env python def fun(arg) : ret = [] for i in range(len(arg)) : if i % 2 ==1 : ret.append(a ...
- 3.mvc core 文件目录详细的解释
wwwroot 放js css image的文件夹,静态文件. favicon.ico 网站图标.上传文件的话最好在里面新建一个Upload的文件夹进行管理 Controllers 控制器, View ...
- iOS Library not loaded: Reason: image not found
iOS Library not loaded: ReactiveCocoa.framework ...Reason: image not found 解决办法:BuildPhases中,将对应的框架的 ...