python整理-day4,,1.Python基础


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:wzcdef f1():    passprint(callable(f1))

技术分享

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

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

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

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzca=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:wzcimport randomli=[]num=0for  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=0re="".join(li)print(re)

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

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

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

3.执行代码

Compile,就是用来编译代码的

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs=‘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:wzcr1=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:wzcr=divmod(99,10)print(r)

技术分享

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

对象是类的实例

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

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

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

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzca=["a","b"]r=isinstance(a,list)print(r)

技术分享

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

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

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

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

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcli=[11,22,33,44,]def f1(arg):  if arg > 22:    return Trueret=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:wzcli=[11,22,33,44,]def f1(arg):    if arg > 22:        return Trueret=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:wzcs=‘wzcceqwediojdfiosjdjkfnjkwdhuiahjcnzkxcnx‘print(hash(s))

技术分享

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

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs="哈哈"print(len(s))b=bytes(s,encoding="utf-8")print(len(b))

技术分享

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

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs=‘{"k1":"v1"}‘#里面必须是双引号,单引号不行print(type(s),s)import jsonn=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@outerdef f1(arg):    print(arg)    return "haha"r=f1("heihei")print(r)print("#")@outerdef f2(a1,a2):    print(a1,a2)f2(11,12)

技术分享

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcdef f1():  print("F1")def f2(xxx):  xxx()f2(f1)

技术分享

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

def outer(func):  def inter():    print("before")    func()    print("after")  return inter@outerdef f1():  print("F1")f1()

技术分享

@+函数

功能:

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

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

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcdef outer(func):  def inter(*args, **kwargs):    print("before")    r=func(*args, **kwargs)    print("after")    return r  return inter@outerdef f1(arg):  print(arg)  return "haha"r=f1("heihei")print(r)print("#")@outerdef f2(a1,a2):  print(a1,a2)f2(11,12)

技术分享

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

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

python整理-day4

相关内容

    暂无相关文章

评论关闭