热门标签 | 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 参数 :返回值

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

  

 

 
 


       

 

 

      

 


推荐阅读
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
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社区 版权所有