热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PythonDay14(内置函数,匿名函数(lambda表达式))

PythonDay14(内置函数,匿名函数(lambda表达式))内置函数截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是pytho

Python Day 14 (内置函数,匿名函数(lambda表达式))

  内置函数

    截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。

     内置函数    
abs() dict() help() min() setattr()
all()  dir()  hex()  next()  slice() 
any()  divmod()  id()  object()  sorted() 
ascii() enumerate()  input()  oct()  staticmethod() 
bin()  eval()  int()  open()  str() 
bool()  exec()  isinstance()  ord()  sum() 
bytearray()  filter()  issubclass()  pow()  super() 
bytes() float()  iter()  print()  tuple() 
callable() format()  len()  property()  type() 
chr() frozenset()  list()  range()  vars() 
classmethod()  getattr() locals()  repr()  zip() 
compile()  globals() map()  reversed()  __import__() 
complex()  hasattr()  max()  round()  
delattr() hash()  memoryview()  set()  

 

  1.1 作用域相关

      ** locals():函数会以字典的类型返回当前位置的全部局部变量。

      ** globals():函数以字典的类型返回全部全局变量。

  1.2 其他相关

    1.2.1 执行相关

      *** eval() 去除字符串的引号,返回对应内部的值。

s = '{"a":1,"b":3}'
dic = eval(s)
print(dic,type(dic))
print(eval('2 + 2'))
print(eval('print(666)'))

==============
{'a': 1, 'b': 3} 
4
666
None

      *** exec() 执行字符串内部的代码。

print(exec('1 + 1'))   
==============
None #exec 没有返回值,主要用于直接打印结果,或交互型。

ret = '''
name = input('请输入名字:').strip()
if name == 'alex':
    print(666)
'''
exec(ret)

      compile() 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。

'''
参数说明:   

1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。  

2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。  

3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。
'''
>>> #流程语句使用exec
>>> code1 = 'for i in range(0,10): print (i)'
>>> compile1 = compile(code1,'','exec')
>>> exec (compile1)


>>> #简单求值表达式用eval
>>> code2 = '1 + 2 + 3 + 4'
>>> compile2 = compile(code2,'','eval')
>>> eval(compile2)


>>> #交互语句用single
>>> code3 = 'name = input("please input your name:")'
>>> compile3 = compile(code3,'','single')
>>> name #执行前name变量不存在
Traceback (most recent call last):
  File "", line 1, in 
    name
NameError: name 'name' is not defined
>>> exec(compile3) #执行时显示交互命令,提示输入
please input your name:'pythoner'
>>> name #执行后name变量有值
"'pythoner'"

  

    1.2.2 输入输出相关

      input() 交互输入信息,数据类型为字符串。

      print() 打印信息。

    1.2.3 内存相关

      * hash() 将不可变的数据通过hash算法转化成hash值,数字类型hash值是数字本身,其他类型hash值不固定。

print(hash('name'))
print(hash('age'))
print(hash((1, 2, 3,)))

      id()

    1.2.4 文件操作相关

      ***(open() 函数用于打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

    1.2.5 模块相关

      __import__: 函数用于动态加载类和函数

    1.2.6 帮助

      * help() 函数用于查看函数或模块用途的详细说明。

    1.2.7 调用相关

      *** callable() 函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

def func1():
    print(666)
age = 16  
print(callable('name')) #字符串不是可调用的对象
print(callable(age)) #变量名不是可调用的对象
print(callable(func1)) #True

    1.2.8 查看内置属性

      ** dir()  函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

print(dir(str))

  1.3 迭代器生成器相关

    *** range()

print(len(range(100)))

    *** iter()

l = [1, 2, 3, 4, 5]

l_obj = l.__iter__()   

l_obj = iter(l)

效果一致 iter()调用__iter__()

    *** next()

print(l_obj.__next__())

print(next(l_obj))

  1.4 数字相关

    1.4.1 数据类型

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

      int() 函数用于将一个字符串或数字转换为整型,不能将内部为浮点数的字符串转换为整数。

      float():函数用于将整数和字符串转换成浮点数。

      complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数,如果第一个参数为字符串,则不需要指定第二个参数。

    1.4.2 进制转换

       bin:将十进制转换成二进制并返回。

print(bin(100))
0b1100100

       oct:将十进制转化成八进制字符串并返回。

print(oct(10))
0o12

       hex:将十进制转化成十六进制字符串并返回。

print(hex(13))
0xd

    1.4.3 数学运算

       *** abs() 函数返回数字的绝对值。

print(abs(-5))
5

       *** divmod()  计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。

print(divmod(7, 3))

(2, 1)

       ** round()  保留浮点数的小数位数,默认保留整数。

print(round(1.234,2))
1.23

       *pow():求x**y次幂。(三个参数为x**y的结果对z取余)

print(pow(2, 3)) # 2的三次幂     8
print(pow(2, 3, 3))  # 2的三次幂对3取余数   2

       ***sum():对可迭代对象进行求和计算(可设置初始值)。

print(sum([1, 2, 3, 4]))   #10

print(sum([1, 2, 3, 4], 100)) #110

      *** min():返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)。

print(min([1, 3, 5, 7, -4]))  # -4 
print(min([1, 3, 5, 7, -4], key=abs))  # 1

      *** max(): 返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)。

print(max([1, 3, 5, 7, -4]))  #7
print(max([1, 3, 5, 7, -9], key=abs)) #-9

   1.5 数据结构相关 

    1.5.1 列表和元组

      list():将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)。

l1 = list({'name':'alex','age':1000})    #只取键
print(l1)

['name', 'age']

      tuple():将一个可迭代对象转化成元祖(如果是字典,默认将key作为元祖的元素)。

    1.5.2 相关内置函数

      *** reversed():将一个序列翻转,并返回此翻转序列的迭代器。

l1 = [11, 22, 33, 44, 77, 66]
l_obj = reversed(l1)
for i in l_obj:
    print(i)

66
77
44
33
22
11

      slice():构造一个切片对象,用于列表的切片。

l1 = [11, 22, 33, 44, 77, 66]
l2 = [111, 222, 333, 444, 777, 666]
print(l1[1::2])
rule = slice(1, len(l2), 2)   #重复切片动作,使用同一规则时使用slice
print(l2[rule])

    1.6 字符串相关

      str():将数据转化成字符串。

      format:与具体数据相关,用于计算各种小数,精算等。

print(format('test', '<20'))  # 左对齐
print(format('test', '>20'))  # 右对齐
print(format('test', '^20'))  # 居中

test                
                test
        test    

      *** bytes:str---> bytes  与 str.encode 相同

s1 = 'alex'
b1 = s1.encode('utf-8')
b2 = bytes(s1,encoding='utf-8')
print(b1)
print(b2)

b'alex'
b'alex'

        bytearray()

ret = bytearray('alex', encoding='utf-8')  # 类比:[97,103,....]
print(id(ret))
print(ret)  # bytearray(b'alex')
print(ret[0])
ret[0] = 65
print(ret)
print(id(ret))     

        memoryview()  分字节去转换成str

b1 = bytes('你好',encoding='utf-8')
print(b1)   #b'\xe4\xbd\xa0\xe5\xa5\xbd'
ret = memoryview(b1)
print(len(ret)) #6
print(ret)     # 
print(bytes(ret[:3]).decode('utf-8')) #你
print(bytes(ret[3:]).decode('utf-8')) #好

        ord():输入字符找该字符编码的位置 

print(ord('a'))  #97 
print(ord('中'))  # unicode 20013

        chr():输入位置数字找出期对应的字符  常用范围(大写字母:65-90  A-Z)  (小写字母:96-122) (数字:48-57)

33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
View Code
print(chr(65))  #A
print(chr(20013)) # unicode 中

        ascii:是ascii码中的返回该值,不是就返回/u...+16进制

print(ascii('a')) #'a'
print(ascii(1))   # 1 
print(ascii('中')) # '\u4e2d'

        *** repr:返回一个对象的string形式(原形毕露)。

msg = '小数%f' %(1.234)
print(msg)
msg = '姓名:%r' % ( 'alex')
print(msg)
print(repr('{"name":"alex"}'))
print('{"name":"alex"}')


小数1.234000
姓名:'alex'
'{"name":"alex"}'
{"name":"alex"}

    1.7  数据集合(3)

        dict() 创建一个字典

dic = dict({'name': 'alex'})
print(dic)

{'name': 'alex'}

        set() 创建一个集合

set1 = set(('alex','wusir'))
print(set1)

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

    1.8 相关内置函数

        *** len() 返回一个对象中元素的个数

        sorted():对所有可迭代的对象进行排序操作。

print(sorted([1, 2, 3, 4, 5, -6]))
print(sorted([1, 2, 3, 4, 5, -6], key=abs))

[-6, 1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, -6]

L = [('a', 1), ('c', 2), ('d', 4), ('b', 3), ]
print(sorted(L))
def func1(x):
    return x[1]
L = [('a', 1), ('c', 2), ('d', 4),('b', 3), ]
print(sorted(L, key=func1))

        *all:可迭代对象中,全都是True才是True

print(all([1, 'alex', True, (1,2,3)]))  # True

print(all([0, 'alex', True, (1,2,3)]))    #False

        *any:可迭代对象中,有一个True 就是True

print(any([0, '', False, (1,2,3)])) # True

print(any([0, '', False, ()])) #False

        ***zip 拉链方法 返回的是一个迭代器

l1 = [1, 2, 3, 4]
tu1 = ('老男孩', 'alex', 'wusir')
l2 = ['*', '**', '***', "****"]
obj = zip(l1,tu1,l2)
for i in obj:
    print(i)


(1, '老男孩', '*')
(2, 'alex', '**')
(3, 'wusir', '***')

        ***map: 循环模式

def func2(x):
    return x**2
obj = map(func2, [1, 2, 3, 4])
for i in obj:
    print(i)
print((i**2 for i in [1, 2, 3, 4]))

def func2(x, y):
    return x + y
obj1 = map(func2, [1, 2, 3, 4, 6], (2, 3, 4, 5))
for i in obj1:
    print(i)

        ***filter 筛选模式

def func(x):
    return x % 2 == 0
ret = filter(func,[1, 2, 3, 4, 5, 6, 7])
print(ret) #
for i in ret:
    print(i)


2
4
6

print((i for i in [1, 2, 3, 4, 5, 6, 7] if i % 2 == 0))   # at 0x0000021C5FA90F68>
***lambda 匿名函数 一句话函数
ret = lambda x, y: x+y
函数名 = lambda 参数 :返回值

#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型

  

 

 
 


       

 

 

      

 


推荐阅读
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
author-avatar
我是谁的宝贝儿呢颓
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有