python3学习笔记(3)

一、内置函数补充1、callable()检测传递的参数是否可以被调用。def f1()    pass可以被调用

f2 = 123不可以被调用

2、chr()和ord()chr()将ascii码转换成字符,ord()将字符转换成acsii码在2.7中chr()和ord()用来翻译参数和ascii码的对应关系。例:r = chr(65)print(r)和r = ord("B")print(r)

实例:随机验证码import random #用来生成随机数的模块li = []for i in range(6):    r = random.randrange(0,5)    if r == 2 or r == 4:        num = random.randrange(0,10)        li.append(str(num))    else:        temp = random.randrange(65,91)  #在给定的范围内随机生成数字,以acsii码大写字母的范围进行随机数生成        c = chr(temp) #使用chr对数字转化成字符        li.append(c)

print ("".join(li)) #使用join进行列表中元素拼接

3、compile()把一个字符串编译成python代码例:s = "print(123)"r = compile(s,"<string>","exec")print(r)

解释器执行时的步骤:第一步:读取文件内容到内存(类型str,类似open打开)第二部:将字符串编译成特殊的代码第三部:执行代码

4、eval()将接收到的一个字符串当作一个表达式,计算并拿出结果例:s = "8*8"ret = eval(s)print (ret)

5、exec()用来执行由compile编译而来的代码;如果接受到的是一个字符串,那么就在内部将字符串编译成代码,然后执行。例:s = "print(123)"r = compile(s,"<string>","exec")exec(r)

6、delattr()反射,delattr,getattr,setattr,hatattr

7、dir()快速查看一个对象提供了哪些功能例:dir(list)

8、help()查看一个对象提供的功能的详细解释例:help(list)

9、divmod()计算两个数相除,返回商和余数的元组例:共97条数据,每页显示10条,需要多少页?r = divmode(97,10)print(r)

10、isinstance()判断一个对象是否是某个类的实例例:s = "alex"r = isinstance(s,srt)print(r)

11、filter()filter(函数,可迭代的对象)循环第二个参数,用参数中的每一个元素作为实际参数传给第一个参数函数进行执行,如果函数返回True则将这个元素加入列表,如果返回False就抛弃这个元素,最终形成一个列表返回例1:def f2(a):    if a>22:        retuen Trueli = [11,22,33,44,55]ret = filter(f2,li)print(list(ret))

例2:li = [11,22,33,44,55]result = filter(lambda a:a>33,li) #lambda表达式自动returnprint(list(result))

12、map()map(函数,可迭代的对象)自动循环,对可迭代对象的每一个元素用传入的函数进行处理,将函数的返回值添加到结果中。例1:def f1(a):    return a+100

li = [11,22,33,44,55]result = map(f1,li)print(list(result))

例2:li = [11,22,33,44,55]result = map(f1 = lambda a:a+100,li)print(list(result))

13、globals()、locals()globals代表所有的全局变量locals代表所有的局部变量例:NAME = "ALEX"def show():    a = 123    c = 123    print(globals())    print(locals())show()

14、hash()根据传入参数生成hash值,一般用户字典的key来保存,其他所有语言一般都适用

15、max()、min()、sum()max用来取列表中的最大值min用来取列表中的最小值sum用来求列表中所有元素的和

16、object()是所有类的父类

17、pow()用来求平方例:2**10

等同于

r = pow(2,10)

18、reversed()进行反转,例如对列表中的元素进行反转

19、round()对数字进行四舍五入

20、slice()对字符串进行切片

21、sorted()对列表进行排序

22、zip()将多个列表进行混合,相同位置的所个元素组成一个元组作为一个元素,如果相同位置只有一个元素则不组合。例:l1 = ["alex",11,22,33]l2 = ["is",11,22,33]l3 = ["sb",11,22,33]r = zip(l1,l2,l3)temp = list(r)[0]ret = " ".join(temp)print(ret)

整理:必须会的内置函数:abs(),all(),any(),bin(),bool(),bytes(),chr(),dict(),dir(),divmod(),enumerate(),eval(),exec(),filter(),float(),help(),hex(),id(),input(),int(),isinstance(),len(),list(),locals(),map(),max(),min(),sum(),oct(),open(),ord(),pow(),print(),range(),round(),set(),str(),tuple(),type(),zip()

二、装饰器1、概要装饰器最常用在登录验证。开放封闭原则:在类内部、函数内部对于调用方来说是封闭的,如果统一更改函数不要直接在函数内部改,只能在外部改。即内部封闭、外部开放。装饰器主要解决,在遵循开放封闭原则的前提下,为函数添加功能。例:def outer(func)    def inner()        print("log")        func()        print("after")    return inner

@outerdef f1():    print("F1")注:装饰器原理,即自动执行outer函数并且将@outer下方出现的函数的函数名作为参数传入;即将outer函数的返回值重新赋值给f1。换个说法就是,一旦一个函数被装饰器装饰,那么这个函数的函数名就会被重新赋值,赋值成装饰器函数的内存函数。此时,上例中,fi函数已经被重新赋值成inner函数,而原f1函数被赋值成为了func函数。

2、学习装饰器必备知识:例1:def f1():    print("123")

def f1():    print("456")

f1()注:在执行函数f1时,是输出456,因为python自上而下解释,在执行到第二个函数时,会将f1的内存指针更行指向第二个函数,因此最终执行的时候最后一定定义的f1函数

例2:def f1():    print("123")

def f2(xxx):    xxx()

f2(f1)注:在执行时,是输出“123”,原因是函数可以作为参数传递,在执行时,将函数f1作为参数传递进f2,f2内部即执行了f1函数。

例3:def f1():    print("123")

注:当一个函数只是被定义,而没有被调用的时候,解释器解释到他的时候是不执行的。

3、装饰器的返回值例:def outer(func):    def inner():        print("log")        r = func()        print("after")        return r    return inner

@outerdef f1():    print("F1")    return "FFFF"注:如果原函数有返回值,那么仅仅为原函数加上装饰器后,装饰器函数不会返回原函数的返回值,仅返回默认值None,需要在装饰器函数内,定义一个变量来接收原函数的返回值,并在装饰器函数中将这个变量返回,才算是一个比较完整的装饰器。

4、装饰器的参数例1:def outer(func):    def inner(a):        print("log")        r = func(a)        print("after")        return r    return inner

@outerdef f1(a):    print("F1")    return "FFFF"

r = f1("fafafa")print r注:如果原函数有参数,而装饰器函数没有参数的时候,在执行的时候给函数传入了参数,则会报错,因此如果被装饰的原函数有参数,那么装饰器函数有也需要有参数。问题:装饰器作为对多个函数的统一操作,会涉及多个函数,每个函数所需要的参数各不相同,如果用上述方法,将极大的减低装饰器的通用性。

例2:def outer(func):    def inner(*args,**kwargs):        print("log")        r = func(*args,**kwargs)        print("after")        return r    return inner

@outerdef f1(a):    print("F1")    return "FFFF"

def f2(a1,a2):    print("F2")

r1 = f1("fafafa")print r1r2 = f2(111,222)注:为了解决例1中的问题,可以在装饰器函数中使用“万能参数”,并且在装饰器函数执行原函数时也使用“万能参数”,python在内部会将装饰器函数收到的参数直接传递给原函数执行,到此未知,就是一个成型的普通装饰器。

作业:用户管理程序:普通用户:登录,注册,修改密码,查看本用户信息管理员用户:登录,注册,修改密码,查看本用户信息,添加删除普通用户,修改普通用户密码,查看所有普通用户,按照指定关键字搜索用户信息,提高普通用户权限。用户信息存放进文件使用装饰器
时间: 2024-10-19 19:57:58

python3学习笔记(3)的相关文章

Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) -         url:  需要打开的网址 -         data:Post提交的数据 -         timeout:设置网站的访问超时时间 直接用urllib.request模块的urlopen()

python3学习笔记(1)

#python学习笔记 17/07/07# !/usr/bin/evn python3# -*- coding:utf-8 -*- #r"" 引号当中的字符串不转义 #练习#打印 '\\\t\n'print(r'\\\t\n') #打印 n = 123print('n = 123') # 打印 f = 456.789print("f = 456.789") #打印 s1 = 'Hello, world!'print("s1 = 'Hello, world!

python3学习笔记(0)

一.编程语言主要从以下几个角度分类:1.编译型和解释型2.静态语言和动态语言3.强类型定义语言和弱类型定义语言 编译型:程序运行前先由负责翻译的程序将代码转换成可执行代码进行执行.例如C/C++.Pascal/Delphi.VB.其优点为运行速度快,对系统要求低,适用于开发操作系统.大型应用程序.数据库系统等.解释型:程序运行时每直行到一条指令就由解释程序将所执行到的代码转换成可执行代码进行执行,如此反复,直至程序直行完毕.例如Java.JavaScript.VBScript.Perl.Pyth

python3学习笔记(2)

一.面向对象(初识)由类和方法组成,类里面封装了很多功能,根据这个类,可以创建一个这个类的对象,即对象是根据这个类创建的,以后这个对象要使用某个功能的时候就从这个类里面的找.例:str -功能一 -功能二 -功能三 -... s1 = 'alex'str即是类,s1即是根据这个类创建的一个对象. 二.set集合set是一个无序.不重复.可嵌套的集合. 1.语法:se = {}或se = set()或se = set((11,22,33,33)),set()时其实是调用这个类里面的__init__

Python3学习笔记:使用代理访问url地址

#! /usr/bin/env python3 # -*- coding:utf-8 -*- 'python进行代理的curl数据提交' __author__ = 'ken' import os; import sys; curPath = os.path.abspath(os.path.dirname(__file__)); sys.path.append(curPath); import urllib.request; import urllib.parse; import socket;

python3学习笔记(3)_dict-set

1 # !/usr/bin/env python3 2 # -*- coding:utf8 -*- 3 4 #dict 和 set 5 #dict dictionary 用于存放 键值对的, 无序,key 不可变 6 #姓名 年龄的字典 7 d = {"hanmeimei":21, "lilei":23, "jim":23} 8 print(d) 9 #通过 键(hanmeimei) 取到 值 21 10 print(d['hanmeimei']

Python3学习笔记和心得(二)

数据类型 一.数字(int) Python可以处理任意大小的正负整数,但是实际中跟我们计算机的内存有关,在32位机器上,整数的位数为32位,取值范围为 -2**31-2**31-1,在64位系统上,整数的位数为64位,取值范围为-2**63-2**63-1.对于int类型,需要掌握的方法不多,看 下面的几个例子: 1 2 3 4 5 6 a=4 print(a.bit_length()) # 4在二进制中可以用最少3位 100 来表示4,所以输出3 print(int('4'))       #

python3学习笔记--001--python HelloWorld

python默认使用UTF-8编码 一个python3版本的HelloWorld代码如下: #!/usr/bin/env python print ('Hello World!') 如果此python脚本文件名为:hello.py,则运行此脚本文件的方法有两种: 1.python hello.py [[email protected] python]$ python hello.py Hello World! [[email protected] python]$ 2.修改hello.py的权限

python3学习笔记及常见问题

1,mac自带的python是2.7版本,我们需要按照python3,这样在terminal下可以直接使用,但是编译打包的时候会默认使用python2.7 解决办法:安装virtualenv,一个管理包的虚拟环境. $ [sudo] pip install virtualenv如果遇到错误:IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.py' p.p1 { margin: