列表、函数高级操作、标准模块内建函数

Python知识总结

列表、函数、标准模块内建函数

1. 列表快速生成方式

列表中如果存储大量的数据,会导致内存急剧消耗的问题,当数据小的时候用推导式,大的时候用生成器

1.1 推导式

按照一定的规则进行推导产生对应的数据,列表推导式直接产生包含所有数据的列表

1.最基本的列表推导式

a = [x for x in range(0,100)]
备注:生成一个列表,存储0~100内的数据

2.附带条件的列表推导式

a = [x for x in range(0,100) if x % 2 ==0]
生成一个列表,存储100内的偶数

3.附带运算的列表推导式

a = [x**2 for x in range(0,10)]
生成一个列表,存放数据为10以内数据的平方

4.附带多项 数据的列表推导式

a = [x + y for x in range(0,5) for y in range(0,2)]
[0, 1, 2, 3, 4, 1, 2, 3, 4, 5]

总结:

语法:变量 = [推导表达式]

优点:语法简单,可以通过包含逻辑条件生成一个符合条件的列表

缺点:逻辑过于简单,不能生成条件更加复杂的更加准确的列表

1.2 生成器

Python中提供的一种可以将程序算法表达式包含起来的一个用于产生列表数据对象

a_generator = (x for x in range(0,100))
列表生成器:产生一个生成器对象,包含算法

1.使用生成器中的数据

(1)通过系统内建函数next()获取生策划更年期中下一个数据

print(next(a_generator))

(2)通过类型的next()魔法方法,直接获取下一个数据

print(a_generator.next())

1.3 循环遍历与迭代器

程序中任何可以通过next()操作的对象,或者可以通过for循环遍历的对象。

都是迭代对象,迭代对象中有一个迭代标识,迭代标识可以通过迭代对象的iter()****函数获得。

导入模块:for collections import Iterable,Iterator

迭代对象:collections.Iterable 迭代对象

迭代标识:collections.Iterator 迭代标识

class Person:

    def __init__(self,favorite):

        self.favorite = favorite

    def __iter__(self):

        return iter(self.favorite)

p = Person(['1','2','3'])

for x in p:

    print(x)
输出:

1

2

3

备注:必须重写iter()

2. 函数

Python中的函数,本身也是一个对象,常规定义语法的函数,就是将一个函数对象的引用地址赋值给函数名称的变量,通过函数名称的变量调用执行函数

2.1 函数的引用赋值

def show():

    print("你好。。。")

#经函数的地址赋值给一个变量

a = show

#通过变量调用函数

a()
函数也是一个对象,有自己的内存地址

2.2 函数的传值操作

函数的传值操作:设计模式,策略模式

def show(message):
    message()


def hanshu1():
    print("你好。。。")


def hanshu2():
    print("再见。。。")

show(hanshu1)

输出:你好。。。

传递给函数的参数也是一个函数,函数也可以当作一个参数传给另一个函数

2.3 函数装饰器

Python提供了装饰器函数,可以在不修改原有函数的情况下通过添加装饰器函数的注解,给函数进行功能扩展

#定义装饰器函数

def decorates(hanshu):

    def info(*args,**kwargs):

        print("开始执行。。。")

        result = hanshu(*args,**kwargs)

        print("结束执行。。。")

        return result

    return info


@decorates
def hanshu1():

    print("你好...")


@decorates
def hanshu2():

    print("再见。。。")

hanshu1()

hanshu2()

输出:

开始执行。。。

你好...

结束执行。。。

开始执行。。。

再见。。。

结束执行。。。

2.4 偏函数(不常用)

导入functools模块里面的partial可以使用偏函数。

使用偏函数,可以给需要传参的函数设定为任意传参的个数,不一定非要传递函数需要的参数个数

from functools import partial

def show(name,msg):

    print(name,":",msg)

s = partial(show,msg="HI")

s("tom")

show("jerry","hello")

输出:

tom : HI

jerry : hello

2.5 函数闭包

因为函数的出现,导致变量出现了分化:全局变量、局部变量

def hanshu():
    info = "变量"
    print("这是一个函数")
    def hanshu2():
        print("这是第二个函数")
        return info
    return hanshu2
my = hanshu()
msg = my()
print(msg)
输出:

这是一个函数
这是第二个函数
变量

2.6 匿名函数

注意事项:主要是用来替代功能简单的函数,提高代码的简洁性。大量使用lambda表达式会造成代码的可读性严重下降

lambda表达式:通过一个表达式实现函数功能

基本语法:lambda 参数列表:表达式语句

表达式语句:计算表达式,计算结果会自动输出

等价于:

fn = lambda x,y: x + y
def hanshu(x,y):

    print("输出:",x+y)

print(fn(1,2))

hanshu(3,4)

输出:

3

输出: 7

3. 标准模块与内建函数

3.1 系统标准模块

Python标准库中提供了大量的模块,辅助开发人员的软件开发工作

dir() 查看所有内建模块

['annotations', 'builtins', 'doc', 'loader', 'name', 'package', 'spec']

dir(builtins) #****核心内建模块

['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', 'build_class', 'debug', 'doc', 'import', 'loader', 'name', 'package', 'spec', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']

3.2 系统内建函数

image.png

image.png

image.png

image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容