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. Maximum Product Subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  2. easyui DataGrid 工具类之 TableUtil class

    import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.HashM ...

  3. sharepoint2013用户切换实现方式

    作为一个刚学sharepoint的新人,今天在账号的切换中烦躁无比,不知道有木有人和我一样,sharepoint2013没有了切换用户,真的很不方便,当然了,也不是没有办法加上去,经过本人一个下午的研 ...

  4. iOS定时器的使用

    iOS开发中定时器经常会用到,iOS中常用的定时器有三种,分别是NSTime,CADisplayLink和GCD. NSTimer 方式1 // 创建定时器 NSTimer *timer = [NST ...

  5. 杀死mapreduce

    在做mapreduce的时候,ctrl+c 其实就是在doc命令下杀死了mapreduce显示,后台还是有在运行mapreduce的程序 可以http://namenode.hadoop:8088/ ...

  6. 【转】Checkpoint--与lazy writer区别

      checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存. Checkpoint和lazyW ...

  7. css-position

    值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "top", " ...

  8. append追加的使用

    #!/usr/bin/env python def fun(arg) : ret = [] for i in range(len(arg)) : if i % 2 ==1 : ret.append(a ...

  9. 3.mvc core 文件目录详细的解释

    wwwroot 放js css image的文件夹,静态文件. favicon.ico 网站图标.上传文件的话最好在里面新建一个Upload的文件夹进行管理 Controllers 控制器, View ...

  10. iOS Library not loaded: Reason: image not found

    iOS Library not loaded: ReactiveCocoa.framework ...Reason: image not found 解决办法:BuildPhases中,将对应的框架的 ...