引子

什么是内置函数?

  内置函数就是python 提供给我们直接拿来就可以用的函数

     内置函数--内置命名空间
   只管调用 不管实现
   总共68个
   def func(): == #这是自己定义的函数
     pass
   print() == #这是python 提供的内置函数

内置函数分为六大类,总数68个:

  1.作用域相关的有两个

  2.迭代器生成器相关的有三个

  3.基础数据类型相关的有三十八个

  4..面向对象相关的有九个

  5.反射相关的有四个

  6.其他的有十二个

标红色的为必会方法...不....会....混...不....下..去...

第一类:作用域相关函数两个

局部作用域中的变量 —— locals()  #本地
全局作用域中的变量 —— globals()
在全局执行这两个方法,结果相同
在局部执行,locals表示函数内的名字,globals始终不变

def func():x = 1y = 2print(locals())print(globals())func()

作用域函数

第二类迭代器生成器相关函数的有三个

iter   ,   next   ,   range

所有可以调用双下方法的都可以写成加   ()   执行

next()      会在生成器中常用到

range()    会常用到  范围和步长

iter()        不常用 ,只要是可迭代的都会有iter方法

在python里 要尽量少去调用双下方法# def iter(iterable):
#     return iterable.__iter__()#print([1,2,3].__iter__())  #内置的特殊成员
# iterator = iter({1,2,3,4})
# # def next(iterator):
# #     return iterator.__next__()
# print(next(iterator))  #iterator.__next__()
# print(next(iterator))
# print(next(iterator))range(100)  #[0,99]  [0,100)
range(10,100) #[10,99]
range(10,100,2) #[10,99]隔一个取一个
#可迭代对象  最好循环取结果

第三类其他类十二个

小类1>>字符串类型代码执行

eval    exec   compile

compile不要随便用  最好不用  危险系数五颗星*****

#直接拿来执行的方式一定不要随便用
#如果非用不可,你也要做最起码的检测

eval : 有返回值

exec :没有返回值

complie:当需要对某一个字符串数据类型的python代码多次执行的时候,就是用compile先编译一下

# code1 = 'for i in range(0,10): print (i)'
# compile1 = compile(code1,'','exec')   #编译
# # print(compile1)   #code
# exec(compile1)# code2 = '1 + 2 + 3 + 4'
# compile2 = compile(code2,'','eval')
# print(eval(compile2))# name = 'egon'
# code3 = 'name = input("please input your name:")'
# compile3 = compile(code3,'','single')
# exec(compile3)
# print(name)

小类2>>输入输出

inpurt   和  print

input输入时最好加上一些标识符  更好理解的去输入

print 重点有几个方法 sep='***'  end=' ' file=f

结合代码去理解

#a = input('>>>')
# print(11232)
# print(11232,1234,sep='***')
# print('ajkdshkljaf',end=' ')
# print('sagjkg')
# print(12,34,56,sep=',')
# print('%d,%d,%d'%(12,34,56))
# f = open('print_test','a',encoding='utf-8')
# print(12146798,file=f)
*************************************************import timefor i in range(0,101,2):    time.sleep(0.1)    char_num = i//2      #打印多少个'*'    per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)    print(per_str,end='', flush=True)\r 可以把光标移动到行首但不换行**************************************************import sys# for i in range(10):#     time.sleep(0.1)#     print(i*'*',end='')#     # sys.stdout.flush()

小类3内存相关>>hash和id

hash

hash的结果是拿到一个不变的数字和数据库相关

但是重复哈希的值会变  这和算法有关

可变的数据类型都不可以被哈希   --列表 字典 集合

**************************************************

id     标志着一个数据的内存地址

is is not 不仅比较值的大小还比较内存地址是否一致

身份运算 ==只比较值的大小

# hashlib模块
# print(hash('sdfsdf'))
# print(hash('sdfsdf'))
# print(hash('sdfsdf'))
# print(hash('sdfsdf'))
# 是一种摘要算法   每次hash的结果都不一样
# print(hash((1,2,3,4,5,6,7)))
# print(hash([12,2,54]))#可变的数据类型都不可以被哈希  列表 字典 集合
#hash的结果是一个数字
# hash作用  作为字典的key
# 数据库   字典# hash在python的一次执行中,对于相同的可hash对象来说
#
#
# id()标志着一个数据的内存地址
# is is not 不仅比较值的大小还比较内存地址是否一致
# 身份运算  ==只比较值的大小

小类4>>文件操作相关 open()

小类5>>模块相关__import__但是要这样用 import

小类6>>帮助 help() 退出 是q

小类7>>调用相关 判断是否可调用 callable

小类8>>查看内置属性  dir()看到数据类型里面有什么方法/内置属性

    print(dir(__builtins__)) 查看所有的

第四类基础数据类型相关的有三十八个

基础数据类型分为两大类  : 数字相关里有三小类 和 数据结构相关 里有三小类

......                      ..                           .......

数字相关分为 1.数据类型 2.进制转换 3.数学运算

数据结构相关分为 4. 序列  5.数据集合  6.相关内置函数

1.数据类型 包括 布尔bool , int , float ,complex

  bool() :bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False  返回值 返回 Ture 或 False。

   int () :int() 函数用于将一个字符串会数字转换为整型,去浮点数,也就是转换成数字

  print(type(int('123')))   print(type('123'))用于强转数据类型

  float() :float()函数用于将整数和字符串转换成浮点数。 就是加上了末尾的小数点

  compile():compile() 函数将一个字符串编译为字节代码。

2. 进制转换 包括 bin oct hex

  bin:转换为二进制  oct 转换成八进制  hex  转化成十六进制

3.数学运算 包括 abs  divmod  round pow   sum min max    (都是重点)

  abs:计数绝对值   相当于负数都是正数然后去计算

  divmod:返回商取余 ,用于分页 

# ret = divmod(21, 5)
# print(ret)
# #商4余1   用于分页
# #105  分10页  余 5  11页
# ret = divmod(105, 10)
# print(ret)

divmod

  round: 幂运算 print(pow(2,3))

  sum: 求和   print(sum([1,2,3,4,5],'本钱'))   print(sum(range(100)))

  min: 计算最小值  max:计算最大值

     可以接收散列的值,和可迭代的对象 key是一个函数名,判断的结果根据函数的返回值来确定

     defult 如果可迭代对象为空,设置默认最小值

print(min(range(20)))
print(min([1,2,3,4,5]))
print(max([1,2,3,4,5]))
print(min([-1,-5,6],key=abs))装成绝对值 计算
print(max([1,-8,6],key=abs))装成绝对值 计算  key根据函数的返回值 来判断大小
min max 可以接收散列的名 和可迭代对象
key 是一个函数名 根据函数的返回值 来判断大小

最大小值

  

4.序列:包括列表和原组 list  tuple    主要用于强转  reversed  反转   slice 相当于切片 

  list() 方法用于将元组转换为列表。tuple() 函数将列表转换为元组。

  注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。

tuple({1:2,3:4})    #针对字典 会返回字典的key组成的tuple    (1, 3)

aList = [123, 'xyz', 'zara', 'abc'];
aTuple = tuple(aList)
Tuple elements :  (123, 'xyz', 'zara', 'abc')aTuple = (123, 'xyz', 'zara', 'abc');
aList = list(aTuple)
列表元素 :  [123, 'xyz', 'zara', 'abc']

列表 元组

  reversed() 反转数据  就是倒着输出

ret = reversed([1,2,3,4])
print (list(ret))
print (set(ret))
ret = reversed(range(0,20))
# print(list(ret))
# print(tuple(ret))

ret = reversed('ajagjfd')
# print(ret)print('323'.join(list(ret)))

reversed()

4.1字符串类型 包括: str  format  bytes  bytearray memoryview  ord  chr  ascii  repr

  str:强转字符串

  format:格式化输出

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'....................................................#!/usr/bin/python
# -*- coding: UTF-8 -*-print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是可选的

format#字符串可以提供的参数,指定对齐方式,<是左对齐, >是右对齐,^是居中对齐
print(format('test', '<20'))
print(format('test', '>20'))
print(format('test', '^20'))

format

  bytes:转换成为bytes直接编码  解码需要decode

# s = 'alex'
# by = bytes(s,encoding='utf-8')   #新华字典第n页第m行第k个
# print(by)
# print(by.decode('utf-8'))

bytes

  bytearray:修改字符编码组  但是修改完不改变内存地址  但是需要记住编码号

#array  ==  数组
#alex  [a,l,e,x]
# s = 'alex'
# ret = bytearray(s,encoding='utf-8')
# print(id(ret))
# ret[0] = 65
# print(ret,id(ret))
# s = ret.decode('utf-8')

bytearray

   memoryview :转化为字符组 进行节省内存的切片操作

  ord:字符按照unicode转数字

  chr:数字按照unicode转字符

  ascii:字符串转ascaii

  repr:用于%r格式化输出  大白话就是保留原始输入的数据类型,不会进行任何改变

  

5.数据集合:包括字典dict()和集合()  和  frozenset()转变为不可变的集合

  字典:dict 用于构建字典

  集合:set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

  x = set('runoob')  y = set('google')  print(x,y) 删除重复原素  还可以进行 交并差集计算

  frozenset():转变为不可变的集合     这种方法去掉了删除功能

  frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

6.相关内置函数

  len:计算数据长度  字典根据一对是一个值 来计算

  enumerate:enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))       # 小标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]普通的 for 循环
>>>i = 0
>>> seq = ['one', 'two', 'three']
>>> for element in seq:
...     print i, seq[i]
...     i +=1
...
0 one
1 two
2 threefor 循环使用 enumerate
>>>seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
...     print i, seq[i]
...
0 one
1 two
2 three
>>>

enumerate

  all:判断 是否有bool值为fales的值  只要有一个不是真就返回fales

    any:判断 是否有bool值为True的值  只要有一个是真就返回True

    zip:zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同   通俗理解就是两个元素相加得到相对应的列表中的元组集合

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]#zip
# l = (12,3,4,5,6,7)
# l2 = ('a','b','c','d')
# l3 = [9,8,7]
# ret = zip(l,l2,l3)
# for i in ret:
#     print(i)

zip

匿名函数

lambda表达式应用

Python中的lambda表达式就是匿名函数,也就是没有名字的函数。lambda表达式的语法非常简单:

下图是定义lambda表达式和定义一个普通函数的对比:

lambda表达式通常是配合其他的内置函数一起使用,以达到简化代码使代码逻辑更清晰的目的。

注意:

使用lambda表达式并不能提高代码的运行效率,它只能让你的代码看起来简洁一些。

对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

#普通函数1 def func(a):
2     return a+1
3 print 'test1_func0:',func(1000)4#lambda表达式 5 func0 = lambda a:a+1 6 print 'test2_func0:',func0(1000)

上面这种方法,都实现了将1000+1的结果打印出来这个功能,但是用下面

lambda存在意义就是对简单函数的简洁表示。

说道lambda,这里再赠送一些可以给lambda加buff小伙伴:

1.map函数,我们使用map函数将会对列表中的所有元素进行操作。map有两个参数(函数,列表),它会在内部遍历列表中的每一个元素,执行传递过来的函数参数。在输出到新列表中。

1 li = [11, 22, 33]
2 new_list = map(lambda a: a + 100, li)输出:[111, 122, 133]

当然,map还可以完成多个数组的相加:

1 li = [11, 22, 33]
2 sl = [1, 2, 3]
3 new_list = map(lambda a, b: a + b, li, sl) 4 print new_list输出:[12, 24, 36]

2.reduce函数,对于序列内所有元素进行累计操作:

1 lst = [11,22,33]
2 func2 = reduce(lambda arg1,arg2:arg1+arg2,lst)
3 print 'func2:',func2输出:func2: 66

3.filter函数,他可以根据条件对数据进行过滤:

1 li = [11, 22, 33]
2 new_list = filter(lambda arg: arg > 22, li)3 print new_list输出:[33]

转载于:https://www.cnblogs.com/zgd1234/p/7490590.html

Python全栈之路系列----之-----内置函数和匿名函数lamdba相关推荐

  1. Python全栈之路系列之数字数据类型

    上篇文章中我们简单的体验了Python语言基本概念与语法,那么在继续深入下去的过程中,不妨先学习几个常见的Python内置数据类型?这也是大部分Python教科书的学习目录,由浅至深,慢慢深入. Py ...

  2. Python全栈之路系列之基础篇

    Python的诞生 Python是著名的"龟叔"Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python语 ...

  3. python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)...

    昨日内容回顾 1.三种引入方式1.行内js <div onclick = 'add(3,4)'></div>//声明一个函数function add(a,b){}2.内接js& ...

  4. Python全栈之路系列之面向对象基础

    面向对象基本介绍 Python编程方式: 面向过程编程 面向函数编程 面向对象编程 名称定义: 如果函数没有在类中称之为函数 如果函数在类中称之为方法 创建类 在学习过程中有什么不懂得可以加我的 py ...

  5. 4Python全栈之路系列之Django模型

    Python全栈之路系列之Django模型 MTV开发模式 把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式.在这个模式中 ...

  6. 2Python全栈之路系列之基于socket实现聊天机器人

    Python全栈之路系列之基于socket实现聊天机器人 通过socket实现局域网内的聊天工具. service.py文件如下: #!/usr/bin/env python # _*_ coding ...

  7. 5Python全栈之路系列之字符串格式化

    Python全栈之路系列之字符串格式化 This PEP proposes a new system for built-in string formatting operations, intend ...

  8. 8Python全栈之路系列之Django Cookie 与Sessi

    Python全栈之路系列之Django Cookie与Sessi Cookies cookies是浏览器为Web服务器存储的一小段信息,每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的coo ...

  9. 7Python全栈之路系列之Django表单

    Python全栈之路系列之Django表单 从Request对象中获取数据 HttpRequest对象包含当前请求URL的一些信息: 熟悉/方法 描述 例如 request.path 除域名以外的请求 ...

最新文章

  1. Android用户界面设计学习之旅-第三站
  2. django-ORM单表操作
  3. 大剑无锋之new一个对象背后发生了什么?
  4. php mysql 大量读取_PHP使用PDO从mysql读取大量数据处理详解
  5. 男女共厕,考验男生心理素质的时候到了......
  6. 数学模型让咖啡更好喝
  7. 开启Hadoop/Yarn的日志监控功能,配置Spark历史服务,解决web端查看日志时的Java.lang.Exception:Unknown container问题
  8. 22.哈希表(HashTable)
  9. 理工科学生计算机要求,理工科学生
  10. Zynq-7000基于zynq平台裸跑LWIP协议栈的详解(万字长文)
  11. 中国集成电路设计产业创新发展的认识和思考
  12. wordpress之模板汉化(poedit的使用技巧 及 .po .mo 批量生成技术)
  13. [计算机视觉] (三)相机的针孔成像模型
  14. Python便捷写法:[[0] * n for _ in range(n)]
  15. html缩小照片尺寸像素不变,怎么把图片变小 像素不变
  16. linux常用c函数(中文版)
  17. android 集成第三方库和程序
  18. linux防火墙过滤规则
  19. maven 私库配置
  20. 华为python自动化测试框架_10个自动化测试框架,测试工程师用起来

热门文章

  1. DEEPIN 20安装镜像进入LIVE模式
  2. Java GUI编程:swing JTree实现树形菜单代码示例
  3. gradle镜像配置:使用阿里云仓库服务的代理仓库地址代替jcenter()、mavenCentral()及google()
  4. kafka架构:分区机制详解
  5. arthas命令整理:基础命令、jvm相关、class相关命令
  6. Python Django 多表插入之重写save()方法代码示例
  7. python3元组和序列
  8. python提供了_Python中 为我们提供了一些独特的解决方案的方法特性
  9. 台式电脑耳机插孔在哪_不到一千元的迷你电脑究竟如何?Intel NUC7CJYH测评来了...
  10. Oracle 原理: 数据类型