python整理-day4

1.Python基础

2.基本数据类型:str,dict,list,int

  s="wzc" =>str

3.函数式编程

  函数定义

  内置函数

    文件处理

注意:

li=[11,22,33,44]
def fi(arg):
    arg.append(55)
fi(li)
print(li)
li=fi(li)
print(li)

这里需要说明的是,函数默认返回的是None,所以我们在使用的时候需要通过参数引用

4.其他

  三元运算

  lambda表达式

s="哈哈"

bytes(s,encoding=utf-8)

False:[],{},(),None,0,""
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

def f1():
    pass

print(callable(f1))

中文说明:检查对象object是否可调用。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

注意:类是可调用的,而类的实例实现了__call__()方法才可调用。

版本:该函数在python2.x版本中都可用。但是在python3.0版本中被移除,而在python3.2以后版本中被重新添加。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

a=chr(65)
print(a)

b=ord("B")
print(b)

可以找到ascii码,也可以反向找出,数字转化为字母,字母转化为数字,这里面需要依赖ascii码的对应关系

产生随机数

andom.randrange这就是随机数字的范围.如果和chr相结合,就会有随机字母了,但是需要注意,acsii是有范围的,65-90就是大写字母的范围

这里面的范围,是1<=i<5的,所以在输入的时候需要后面一个加一位

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

import random
li=[]
num=0
for  i  in range(6):
    r=random.randrange(0,5)
    if r == 2 or r == 4:
        c=random.randrange(0,9)
        b=str(c)
        li.append(b)
    else:
        c=random.randrange(65,91)
        b=chr(c)
        li.append(b)
        num=0
re="".join(li)
print(re)

这种是产生数字和英文相结合的随机验证码

1.读取文件内容open,str到内存

2.python,把字符串=》编译=》特殊代码

3.执行代码

Compile,就是用来编译代码的

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

s=‘print("123")‘#将字符串编译成Python代码
r=compile(s,"string","exec")#这里的exec和下面的没有关系
print(r)
exec(r)#执行Python代码

Single:把上面的代码,编译成单行的Python程序

eval:编译成表达式

exec:编译成一模一样的模式

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

r1=exec("7+8+9")
print(r1)
r2=eval("7+8+9")#Eval:通过这个功能,可以将字符串,转化为表达式,并且去执行以下

print(r2)

Exec:要比eval更牛逼,exec能执行所有Python代码和字符串,而eval只能执行表达式

但是eval比exec多一个功能就是,eval有返回值,而exec没有

快速查看对象提供了哪些功能

print(dir(list))

分页功能

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

r=divmod(99,10)
print(r)

分页功能就是通过计算得到商,同时可以得到余数。返回的是一个元祖

对象是类的实例

对象"wzc","www"他们的类就是"str"

对象[11,22,33],["w","z","c"]他们的类就是list

以此类推dict的类大家也就知道了

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

a=["a","b"]
r=isinstance(a,list)
print(r)

Isinstance,判断对象是否是某个类的实例

这个和type 的区别,是isinstance是可以往上找,在基类里面会用到,而type不可以

filter(函数,可迭代的对象)

列表,元祖,字典,都是可迭代的对象

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

li=[11,22,33,44,]

def f1(arg):
    if arg > 22:
        return True

ret=filter(f1,li)
print(list(ret))

在filter的内部,首先会去循环第二个参数,然后在每一次循环的内部执行第一个参数

#filter内部,循环第二个参数
#result=[]
#for  item in 第二个参数
#     r=第一个参数(item)
#    if r:
#        result(item)
#return result
#filter循环函数第二个参数,让每个循环元素执行函数,如果函数返回Ture,表示元素合法
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

li=[11,22,33,44,]

def f1(arg):
    if arg > 22:
        return True

ret=filter(f1,li)
print(list(ret))

li=[11,22,33,44,]
ret1=filter(lambda a:a>33,li)
print(list(ret1))

ret=map(lambda a:a+100,li)
print(list(ret))

这样就可以通过lambda表达式也可以实现相同的功能

map(函数,可迭代的对象(可以for循环的东西))

filter:函数返回Ture,并将元素添加到结果中

map:将函数返回值添加到结果中

frozenset():不可变集合

globals():所有的全局变量

locals():所有的局部变量

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

s=‘wzcceqwediojdfiosjdjkfnjkwdhuiahjcnzkxcnx‘

print(hash(s))

在存储的时候,更多的是存一个hash值,其他语言也基本这样

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc
s="哈哈"
print(len(s))

b=bytes(s,encoding="utf-8")
print(len(b))

Python3是按照字符,Python2是按照字节,python3即可以通过字符,也可以通过字节来查看

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc
s=‘{"k1":"v1"}‘#里面必须是双引号,单引号不行
print(type(s),s)
import json
n=json.loads(s)#将一个字符串转换成Python基本数据类型{},[]
print(type(n),n)

要通过json转换的话,里面的元素必须用双引号,单引号不行

Max():最大

Min():最小

Sum():求和

memoryview():和内存地址相关的一个类

object():一个类,所有类的副类

pow():求方,等同2**10==pow(2,10)

reverse():翻转,list.reverse()==reverse(list)

round():四舍五入

slice():取间隔,s="12345",print([0:2:2])功能相同

sorted():排序,list.sort()=sorted(list)

需要掌握的内置函数

装饰器:从外部装饰一个函数

开放封闭原则

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

# def f1():
#     print("F1")
# def f2(xxx):
#     xxx()
# f2(f1)

def outer(func):
    def inter(*args, **kwargs):
        print("before")
        r=func(*args, **kwargs)
        print("after")
        return r
    return inter

@outer
def f1(arg):
    print(arg)
    return "haha"
r=f1("heihei")
print(r)
print("#")
@outer
def f2(a1,a2):
    print(a1,a2)
f2(11,12)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

def f1():
    print("F1")
def f2(xxx):
    xxx()
f2(f1)

函数是可以当做参数来做调用的,这里面的f1是执行的

def outer(func):
    def inter():
        print("before")
        func()
        print("after")
    return inter

@outer
def f1():
    print("F1")
f1()

@+函数

功能:

  1、自动执行outer函数,并将其下面的函数名f1当做参数传递

  2、将outer函数的返回值重新赋值给f1

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:wzc

def outer(func):
    def inter(*args, **kwargs):
        print("before")
        r=func(*args, **kwargs)
        print("after")
        return r
    return inter

@outer
def f1(arg):
    print(arg)
    return "haha"
r=f1("heihei")
print(r)
print("#")
@outer
def f2(a1,a2):
    print(a1,a2)
f2(11,12)

当fi有参数的时候,装饰器outer也需要跟着有参数才可以执行

当有多个参数的时候,就可以用**来处理

时间: 2024-09-28 20:59:09

python整理-day4的相关文章

Python整理开发环境搭建

Python整理环境搭建,不仅仅包括Python版本的安装,还包括Python命令行,setuptools安装,和工作环境配置等. 1. Python版本的安装 Python的安装 >>> Window下的安装,配置挺简单,稍微注意点的是,PATH配置 >>> Linux 下的安装,大致遵循下面的安装顺序. 网上可以找到很多,Python的安装配置(Windows和Linux下): http://weixiaolu.iteye.com/blog/1617440 安装Mi

Python 整理一

---恢复内容开始--- Python (pailen)最近学习这个语言,其实早在几年前学习perl的时候就知道有这个语言了,在讲perl的那本书后面就推荐学习python,并且还附加了二章的入门.当时初看了一下,发现和perl很相似. 这几天学了python的一些基本东西,整理一下.如下 : #!/usr/bin/python ''' 3.XX版后,默认是UTF-8,支持中文了. ''' #coding=utf-8 '''这是注释,和Perl一样可以使用#号注释单行,但是多行注释是使用3个单引

python 之day4

Python之路,Day4 本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得

python 学习day4

函数装饰器 内置函数 编译字符串成为python代码 # s = "print(123)"# compile(s, "<string>", "exec") 执行代码.字符串.表达式 # exec("print(1+2+3)")  #代码与字符串都可以执行,但是无返回值(无返回值)# print(eval("1+2+3"))  #可以执行表达式,将执行结果当作返回值返回(有返回值) dir(dic

python小白-day4递归和算法基础

递归&算法基础 一.递归 递归函数的优点是定义简单,逻辑清晰.理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰. 使用递归函数需要注意防止栈溢出.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧.由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出. 1 2 3 4 5 6 7 8 def calc(n):     print(n)     if n/2>1:         r

python学习day4之路文件的序列化和反序列化

json和pickle序列化和反序列化 json是用来实现不同程序之间的文件交互,由于不同程序之间需要进行文件信息交互,由于用python写的代码可能要与其他语言写的代码进行数据传输,json支持所有程序之间的交互,json将取代XML,由于XML格式稍微比较复杂.现在程序之间的交互都是用json来进行文件信息的交互. 在使用json序列化和反序列化的时候,dump一次,就要load一次,不能操作. json序列化的过程,就是写入文件中,让另外一个编程语言进行调用: import json in

python整理-day9

1.TCP/IP tcp/ip协议的英文全名:Transmission control protocol and internet protocol tcp/ip协议是主机接入互联网以及接入互联网的两台主机通信额标准 1.物理层(Physical Layer) 物理层规定了激活.维持.关闭通信端点之间的机械特性.电气特性.功能特性以及过程特性.该层为上层协议提供了一个传输数据的物理媒体. 在这一层,数据的单位称为比特(bit). 属于物理层定义的典型规范代表包括:EIA/TIA RS-232.E

python笔记day4

冒泡算法 方法一: 循环次数+一次循环比较的次数=列表长度len(L)-1 使用两层for循环,第一层循环控制循环次数,第二层循环控制比较次数,两次循环之间有关联 #!/usr/bin/env python# -*- coding:utf-8 -*-li = [99,22,11,6,3]for n in range(1,len(li)-1):  --->循环次数    for i in range(len(li)-n):   --->一次循环中比较次数        if li[i] >

python学习day4软件目录结构规范

为什么要设计好目录结构? 参考:http://www.cnblogs.com/alex3714/articles/5765046.html "设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题.对于这种风格上的规范,一直都存在两种态度: 1.一类同学认为,这种个人风格问题"无关紧要".理由是能让程序work就好,风格问题根本不是问题: 2.另一类同学认为,规范化能更好的控制程序结构,让程序具有更高的可读性: 我是比较偏向于后者的,因为