内置函数:

callable:查看对象是否能被调用(对象是函数的话能被调用)
  1. #callable
  2. def f1():
  3. pass
  4. f2="a"
  5. print(callable(f1))
  6. print(callable(f2)) 

#chr() 将ascii码转换成对应的字符

#ord() 相反

  1. print(chr(65))
  2. print(ord("B"))

生成一个6位的随机验证码:

 
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. import random
  5. li=[]
  6. for i in range(6):
  7. r=random.randrange(0,5)
  8. if r == 2:
  9. temp=random.randrange(0,10)
  10. li.append(str(temp)) #注意:join方法要求列表里的每个元素必须是字符串
  11. elif r == 4:
  12. temp=random.randrange(97,123)
  13. k=chr(temp)
  14. li.append(k)
  15. else:
  16. temp=random.randrange(65,91)
  17. k=chr(temp)
  18. li.append(k)
  19. print("".join(li))
V67Dj2A
 
compile()  将字符串,编译成python代码
exec()   执行   比eval功能更强大,直接执行python代码或者字符串(如果接收的是字符串的话,内部会执行compile),没有返回值
eval()    执行   主要是用来执行表达式的,有返回值
 
python解释器执行文件要经过以下几个步骤:
1.读取文件内容到内存  open—str到内存open完成
2.python解释器把  字符串—》编译—》特殊代码   compile完成
3.执行代码exec完成
编译模式:
single:编译成单行的python程序
eval:编译成表达式
exec:编译成和python代码一模一样的东西
  1. with open("zy.py","r",encoding="utf8") as f:
  2. r = compile(f.read(),"<string>","exec")
  3. exec(r)
BBDfji
zy.py是上面的6位随机验证码程序,这个就模拟了python解释器的执行过程
 
  1. s = "print(123)"
  2. r = compile(s,"<string>","exec")
  3. print(r)
  4. print(type(r))
  5. exec(r)
<code object <module> at 0x0000000000802DB0, file "<string>", line 1>
<class 'code'>
123
 
  1. s = '''
  2. print(123)
  3. print(456)
  4. '''
  5. r = compile(s,"<string>","single")
  6. exec(r)
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/untitled/day4.py", line 14, in <module>
    r = compile(s,"<string>","single")
  File "<string>", line 2
    print(123)
             ^
SyntaxError: multiple statements found while compiling a single statement
  1. s = '''
  2. print(123)
  3. print(456)
  4. '''
  5. r = compile(s,"<string>","exec")
  6. exec(r)
123
456
  1. print(eval("2+3"))
  2. a="[1,2,3,4]"
  3. li=eval(a)
  4. print(type(li))
  5. b='{"k1":"v1","k2":"v2"}'
  6. dic=eval(b)
  7. print(type(dic))
5
<class 'list'>
<class 'dict'>
 
 
delattr,getattr,setattr,hasattr  反射  以后讲
 
dir()  快速查看一个对象提供什么功能,不显示功能详细
help()  显示功能详细   
 
divmod()  
  1. #divmod() 得到商和余数,返回值是元组
  2. #共97 每页显示10 总共多少页
  3. print(divmod(97,10))
  4. n1, n2 = divmod(97,10)
  5. print("n1",n1)
  6. print("n2",n2)
(9, 7)
n1 9
n2 7
 
对象是类的实例 则True
isinstance()  
  1. #isinstance() 判断对象是否是某个类的实例
  2. s="alex"
  3. r=isinstance(s,list)
  4. print(r)
False
filter(函数,可迭代的对象)
  1. def f1(a):
  2. if a>22:
  3. return True
  4.  
  5. li=[11,22,33,44,55]
  6. ret = filter(f1,li)
  7. print(ret)
  8. print(list(ret))
<filter object at 0x0000000001142198>
[33, 44, 55]
 
filter和lambda组合:
  1. li=[11,22,33,44,55]
  2. ret = filter(lambda a: a > 33,li)
  3. print(list(ret))
[44, 55]
 
map(函数,可迭代对象),对可迭代对象的每个元素都进行处理
  1. li=[11,22,33,44,55]
  2. def f(a):
  3. return a+100
  4. ret = map(f,li)
  5. print(ret)
  6. print(list(ret))
<map object at 0x0000000000B82128>
[111, 122, 133, 144, 155]
  1. li=[11,22,33,44,55]
  2. ret = map(lambda a: a+100 , li)
  3. print(ret)
  4. print(list(ret))
<map object at 0x00000000011C2128>
[111, 122, 133, 144, 155]
filter:函数返回True 则元素添加到结果中
map: 将函数返回值添加到结果中
  1. NAME = "alex"
  2. def show():
  3. a=123
  4. print(globals())
  5. print(locals())
  6. show()
{'__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000000000A05BA8>, '__builtins__': <module 'builtins' (built-in)>, 'show': <function show at 0x0000000001169C80>, '__cached__': None, '__name__': '__main__', '__doc__': None, '__spec__': None, '__file__': 'C:/Users/Administrator/PycharmProjects/untitled/day4.py', 'NAME': 'alex'}
{'a': 123}
 
如果一个字符串是字典或者列表等形式的,一定是单引号在外边,双引号在里面
 
装饰器:
@ + 函数名
功能:
    1.自动执行outer函数并且将其下面的函数名f1当作参数传递
    2.将outer函数的返回值,重复赋值给f1
详细过程:
1. 将outer函数加载入内存
2. 执行@outer  将函数名f1传给func(func=原f1),执行outer
3. 将inner函数加载入内存
4. 将outer函数的返回值inner,重新赋值给f1,(f1=inner)
5. 当调用f1时,就执行inner(),inner中的func=原f1
 
适用场景:
主要是权限控制
  1. def outer(func):
  2. def inner(*args,**kwargs):
  3. print("before")
  4. ret = func(*args,**kwargs)
  5. print("after")
  6. return ret
  7. return inner
  8.  
  9. @outer
  10. def f1(aa):
  11. print("F1")
  12. return aa
  13. @outer
  14. def f2(*args,**kwargs):
  15. print("F2")
  16. for index,items in enumerate(args):
  17. print(index,"-"*5,items)
  18. for k in kwargs:
  19. print(k,"-"*5,kwargs[k])
  20. f2(1,2,3,a=1,b=2,c=3)
before
F2
0 ----- 1
1 ----- 2
2 ----- 3
b ----- 2
c ----- 3
a ----- 1
after
 
 
 
 

python成长之路——第四天的更多相关文章

  1. 我的Python成长之路---第四天---Python基础(16)---2016年1月23日(寒风刺骨)

    四.正则表达式     字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和 ...

  2. 我的Python成长之路---第四天---Python基础(15)---2016年1月23日(寒风刺骨)

    二.装饰器     所谓装饰器decorator仅仅是一种语法糖, 可作用的对象可以是函数也可以是类, 装饰器本身是一个函数, 其主要工作方式就是将被装饰的类或者函数当作参数传递给装饰器函数.本质上, ...

  3. 我的Python成长之路---第四天---Python基础(14)---2016年1月23日(寒风刺骨)

    一.生成器和迭代器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. ...

  4. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  5. redis成长之路——(四)

    加强redis连接的连接池 虽然StackExchange.Redis针对连接已经做了很多工作,不过在实际应用场景中还是不够的,比如多实例的vip就会导致只能连到其中一个实例上等:本实例中的连接池只能 ...

  6. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  7. 【Python成长之路】装逼的一行代码:快速共享文件

    [Python成长之路]装逼的一行代码:快速共享文件 2019-10-26 15:30:05 华为云 阅读数 335 文章标签: Python编程编程语言程序员Python开发 更多 分类专栏: 技术 ...

  8. python成长之路第三篇(1)_初识函数

    目录: 函数 为什么要使用函数 什么是函数 函数的返回值 文档化函数 函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多 ...

  9. 我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)

    2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...

随机推荐

  1. VS2010使用DX报错 VS报错之混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

    更改项目的app.config内容为以下内容 目的是开启对低版本的NETFWK支持 其实出现混合模式集的问题不只是在V1.1.4322这个版本上,在查询解决方案时发现,但凡程序集版本发生改变时,都有可 ...

  2. poj 2417

    Accepted 8508K 391MS C++ 2004B 相比下边,,优化太多太多了... /** baby-step-giant-step 因为数据量太大,,自己写hash **/ #inclu ...

  3. cnzz广告管家使用心得

    步着谷歌广告管家的后尘,国内百度公司和知名网络流量数据统计公司cnzz也分别推出了百度广告管家和cnzz广告管家.笔者分别注册了这两个网站.通过一段时间的使用,写下此文,希望对各位站长朋友们有所帮助. ...

  4. Correlation rule tuning

    Lots of organizations are deploying SIEM systems either to do their due diligence or because it’s pa ...

  5. github 的分支操作

    首先需要当前目录设置为仓库目录 一.创建本地分支 1.查看有哪些分支:git branch 2.创建一个分支:git branch name  ,其中name是分支名 3.切换到分支:git chec ...

  6. mrtg监控网络流量简单配置

    Mrtg服务器搭建(监控网络流量) [日期:2012-07-03] 来源:Linux社区  作者:split_two [字体:大 中 小]   [实验环境] 监控机:Red Hat linux 5.3 ...

  7. c++ cout 保留小数点位

    需要头文件 <iomanip> 输出时需要用 fixed 和 setprecision() fixed代表输出浮点数,setprecision()设置精度. #include <io ...

  8. 制作cdlinux u盘启动

    U盘一个 CDlinux的iso镜像文件 UltraISO grub4dos grubinst 方法/步骤1 1 [第一步]:用UltraISO把CDlinux的镜像刻录进U盘. 打开UltraISO ...

  9. 一道月薪3W的java面试题 (小明和小强都是张老师的学生,张老师的生日是某月某日,2人都不知道张老师的生日)

    小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日 是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 3 ...

  10. Objective-c 类实现 (@implementation)

    在用@interface声明类之后,可以使用@implementation进行实类的实现.类的实现的具体语法如下: @implementation 类名 方法实现代码; @end; 实例: @impl ...