自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django

自学Python3.3-函数分类(内置函数补充)

内置函数,自定义函数,匿名函数

内置函数(python3.x)

一、作用域相关

1.1 globals()  返回全局作用域内所有

1.2 locals() 返回当前作用域内所有

  • 函数功能返回当前作用域内的局部变量和其值组成的字典,与globals函数类似(返回全局变量)
  • 可用于函数内
  • 返回的字典集合不能修改

二、迭代器/生成器相关 

2.1 next()     next(迭代器) #相等于 迭代器.__next__()

  • 函数必须接收一个可迭代对象参数,每次调用的时候,返回可迭代对象的下一个元素。如果所有元素均已经返回过,则抛出StopIteration异常。
  • 函数可以接收一个可选的default参数,传入default参数后,如果可迭代对象还有元素没有返回,则依次返回其元素值,如果所有元素已经返回,则返回default指定的默认值而不抛出StopIteration 异常。

2.2  iter()    迭代器 = iter(可迭代的) #相等于 迭代器 = 可迭代的.__iter__()

  • 函数功能返回一个迭代器对象。
  • 当第二个参数不提供时,第一个参数必须是一个支持可迭代协议(即实现了__iter__()方法)的集合(字典、集合、不可变集合),或者支持序列协议(即实现了__getitem__()方法,方法接收一个从0开始的整数参数)的序列(元组、列表、字符串),否则将报错。
  • 当第二个参数sentinel提供时,第一个参数必须是一个可被调用对象。创建的迭代对象,在调用__next__方法的时候会调用这个可被调用对象,当返回值和sentinel值相等时,将抛出StopIteration参数必须是一个可被异常, 终止迭代。

2.3  range()    迭代器 = iter(可迭代的) #相等于 迭代器 = 可迭代的.__iter__()

  • range函数用于生成一个range对象,range类型是一个表示整数范围的类型。 
  • 可以直接传入一个结束整数来初始化一个range类型,默认起始值为0(包含0).结束整数可以大于0,也可以小于等于0,但是小于等于0的时候生成的range对象实际是不包含任何元素的。
  • 可以传入一个起始整数和一个结束整数来初始化一个range类型,生成的range类型包含起始整数(包含),和结束整数(不包含)之间的所有整数。
  • 传入了起始整数和结束整数,还可以同时传入一个步进值来初始化一个range类型,生成的range类型包含起始整数(包含),和结束整数(不包含)之间的以步进值筛选后的整数。
  • 初始化range类型时起始整数和结束整数,遵循的是左臂右开原则,即包含起始整数,但不包含结束整数。
  • range接收的参数都必须是整数,不能是浮点数等其它数据类型。
  • range实际上是一个不可变的序列类型,可以对它进行取元素、切片等序列操作,但是不能对其中元素修改值。
  1. range(10)
  2. range(1,11)
  3. range(1,11,2)  

range是一个可迭代的,但不是迭代器。

三、和反射相关

四、和面向对象相关

五、和基础数据类型相关(其中包含两类:和数字相关、和数据结构相关)

数字——数据类型相关:bool,int,float,complex

数字——进制转换相关:bin,oct,hex

数字——数学运算:abs,divmod,min,max,sum,round,pow

序列——列表和元组相关的:list和tuple

序列——相关内置函数:reversed,slice

序列——字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr

数据集合——字典:dict

数据集合——集合:set,frozenset

相关内置函数:len,sorted,enumerate,all,any,zip,filter,map

六、 其他的

6.1  字符串类型代码的执行

6.1.1  eval() 将字符串类型的代码执行并返回结果

  1. print(eval('1+2+3+4'))

6.1.2  exec()将自字符串类型的代码执行

  1. print(exec("1+2+3+4"))
  2. exec("print('hello,world')")

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

参数说明: 

  • 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。  
  • 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。  
  • 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。

流程语句使用exec()

简单求值表达式用eval()

6.2 输入输出相关

6.2.1 input() 输入

6.2.2 print() 输出

  1. def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
  2. """
  3. print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
  4. file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
  5. sep: 打印多个值之间的分隔符,默认为空格
  6. end: 每一次打印的结尾,默认为换行符
  7. flush: 立即把内容输出到流文件,不作缓存
  8. """
  1. f = open('tmp_file','w')
  2. print(123,456,sep=',',file = f,flush=True)

举例子:打印进度条

  1. import time
  2. for i in range(0,101,2):
  3. time.sleep(0.1)
  4. char_num = i//2 # 打印多少个'*'
  5. per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
  6. print(per_str,end='', flush=True) # \r 可以把光标移动到行首但不换行  

6.3 内存相关

6.3.1 id(o) o是参数,返回一个变量的内存地址

6.3.2 hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。

每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。

6.4 文件操作相关

open()  打开一个文件,返回一个文件操作符(文件句柄)

操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+),可以用encoding指定编码.

6.5 模块操作相关

 __import__导入一个模块

  1. import time # 导入时间模块

6.6 帮助

在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出

或者直接执行help(o),o是参数,查看和变量o有关的操作。

6.7 和调用相关

callable(o),o是参数,看这个变量是不是可调用。如果o是一个函数名,就会返回True。

  • 方法用来检测对象是否可被调用,可被调用指的是对象能否使用()括号的方法调用;
  • 可调用对象,在实际调用也可能调用失败;但是不可调用对象,调用肯定不成功;
  • 类对象都是可被调用对象,类的实例对象是否可调用对象,取决于类是否定义了__call__方法。
  1. def func():pass
  2. print(callable(func)) #参数是函数名,可调用,返回True
  3. print(callable(123)) #参数是数字,不可调用,返回False

6.8 查看参数所属类型的所有内置方法

dir()默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量。

  1. print(dir(list)) #查看列表的内置方法
  2. print(dir(int)) #查看整数的内置方法

.....

自学Python3.3-函数分类(内置函数补充)的更多相关文章

  1. day 14 三元运算符,列表字典推导式,递归,匿名函数,内置函数(排序,映射,过滤,合并)

    一.三元运算符 就是if.....else..... 语法糖 前提:if和else只有一条语句 #原始版 cmd=input('cmd') if cmd.isdigit(): print('1') e ...

  2. python协程函数、递归、匿名函数与内置函数使用、模块与包

    目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a. ...

  3. python基础之函数式编程、匿名函数、内置函数

    一 函数式编程 不修改外部状态. 模仿数学里得函数进行编程. 用函数编程写出得代码相当精简. 可读性比较差. 例子: y=2*x+1 x=1 def test(x): return 2*x+1 tes ...

  4. python递归-三元表达式-列表生成式-字典生成式-匿名函数-部分内置函数-04

    递归 递归: # 函数在调用阶段直接或间接地又调用了自身 应用场景: # 将列表中的数字依次打印出来(循环的层数是你必须要考虑的点)   -->  l = [1, [2, [3, [4, [5, ...

  5. Python函数05/内置函数/闭包

    Python函数05/内置函数/闭包 目录 Python函数05/内置函数/闭包 内容大纲 1.内置函数(二) 2.匿名函数及内置函数(重要) 3.闭包 4.今日总结 5.今日练习 内容大纲 1.内置 ...

  6. day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  7. python基础知识15---三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

    阅读目录 一 三元表达式.列表推导式.生成器表达式 二 递归与二分法 三 匿名函数 四 内置函数 五 阶段性练习 一. 三元表达式.列表推导式.生成器表达式 1 三元表达式 name=input('姓 ...

  8. day14(1)--递归、匿名函数、内置函数

    一.递归 定义:本质上是回溯和递推 回溯:询问答案的过程 递推:推出答案的过程 前提: 回溯到一个有结果的值开始递推 回溯与递推的条件要有规律 方式: 直接递归:自己调用自己 间接递归:通过别人来调用 ...

  9. python之三元表达式、列表推导、生成器表达式、递归、匿名函数、内置函数

    目录 一 三元表达式 二 列表推到 三 生成器表达式 四 递归 五 匿名函数 六 内置函数 一.三元表达式 def max(x,y): return x if x>y else y print( ...

随机推荐

  1. CMMI摘要

    CMMI_百度百科https://baike.baidu.com/item/CMMI CMMI分为哪几个等级?CMMI等级介绍_百度经验https://jingyan.baidu.com/articl ...

  2. 分布式文件系统FastDFS

    fastdfs_百度百科https://baike.baidu.com/item/fastdfs/5609710 用FastDFS一步步搭建文件管理系统 - bojiangzhou - 博客园http ...

  3. js判断一个对象{}是否为空对象,没有任何属性

    // js如何判断一个对象{}是否为空对象,没有任何属性 if (typeof model.rows === "object" && !(model.rows in ...

  4. css太极

    自己用css做的太极,留个纪念. 用css做太极有很多种实现方法,我这种大概是最简单的了吧,因为div用得太多了,哈哈. 高级一点的应该是用伪类:before和:after去减少div的用量(手动滑稽 ...

  5. css实现三栏自适应布局(两边固定,中间自适应)以及优缺点

    方法一:绝对定位(absolute + margin) 原理:给左右两边的元素设置absolute,这样左右两边的元素脱离标准文档流的控制,中间的元素自然会上来,然后给中间的元素设置margin留出左 ...

  6. ::class 意思

    自 PHP 5.5 起,关键词 class 也可用于类名的解析.使用 ClassName::class 你可以获取一个字符串,包含了类 ClassName 的完全限定名称.这对使用了 命名空间 的类尤 ...

  7. 如何让pl/sql developer记住密码,实现快速登录

    前两天,有同事使用plsql的时候,切换数据库的时候需要不断的重复输入密码,这样太麻烦了. 下面,我这里说下如何的实现plsql不需要输入密码就能快速登录的方法: 1.一开始登录,首先像往常那样输入密 ...

  8. 设置SQLServer数据库内存

    需要设置SQLServer数据库的内存配置.登录数据库,这里使用的是SQLServer2008,右键点击最上方的服务器名,在弹出的菜单中,点击属性] 打开服务器属性窗口.默认显示的是第一项[常规]内容 ...

  9. Java多线程之synchronized线程锁

    package org.study2.javabase.ThreadsDemo.sync; /** * @Auther:GongXingRui * @Date:2018/9/18 * @Descrip ...

  10. 学习Linux系统的态度及技巧

    Linux作为一种简单快捷的操作系统,现在被广泛的应用.也适合越来越多的计算机爱好者学习和使用.但是对于Linux很多人可能认为很难,觉得它很神秘,从而对其避而远之,但事实真的是这样么?linux真的 ...