我们学了这么多关于函数的知识基本都是自己定义自己使用,那么我们之前用的一些函数并不是我们自己定义的比如说print(),len(),type()等等,它们是哪来的呢?

预习:

1、用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
name=['alex','wupeiqi','yuanhao','nezha']
2、用filter函数处理数字列表,将列表中所有的偶数筛选出来
num = [1,3,5,6,7,8]
3、随意写一个20行以上的文件,运行程序,先将内容读到内存中,用列表存储。 接收用户输入页码,每页5条,仅输出当页的内容
4、如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}
]
1.计算购买每支股票的总价
2.用filter过滤出,单价大于100的股票有哪些

预习题

本篇导航:

一、内置函数

由python内部定义好我们可以直接调用的函数就叫内部函数。python一共给我们68个内置函数:

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()  

上面就是内置函数的表,68个函数都在这儿了。我标注的红色在前面经常出现大家比较熟悉。这个表的顺序是按照首字母的排列顺序来的,你会发现都混乱的堆在一起。比如,oct和bin和hex都是做进制换算的,但是却被写在了三个地方。。。这样非常不利于大家归纳和学习。那我把这些函数分成了7大类。有助于大家总结和记忆。

内置函数思维导图:

思维导图详细地址:https://www.processon.com/view/link/598042afe4b03afe8264824f

密码:91K8

其中在七个分类中有详细分类。中标注红色为必须掌握,黄色为重点掌握,其他的作为了解。


二、内置函数部分详解

1、作用域相关(locals,globals)

基于字典的形式获取局部变量和全局变量

globals()——获取全局变量的字典

locals()——获取执行本方法所在命名空间内的局部变量的字典

def func():
x = 1
y = 2
print(locals()) #打印局部作用域中的名字
print(globals()) #打印全局作用域中的名字

2、其他

s = input("请输入内容 : ")  #输入的内容赋值给s变量
print(s) #输入什么打印什么。数据类型是str

input输入

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

print输出源码剖析

import time
import sys
for i in range(0,101,2):
time.sleep(0.1)
char_num = i//2 #打印多少个#
per_str = '%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
print(per_str,end='', file=sys.stdout, flush=True)

进度条(了解)

3、数据类型相关

num = 123
num1 = [1,2,3]
num2 = "hello"
type(num,num1,num2) #返回变量的数据类型

type

4、内存相关

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

hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。

t = (1,2,3)
l = [1,2,3]
print(hash(t)) #可hash
print(hash(l)) #会报错 '''
结果:
TypeError: unhashable type: 'list'
'''

hash实例

hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。

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

5、文件操作相关

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

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

可以用encoding指定编码

open()
r,w,a,r+,w+,a+,(都可以+b)
f = open('tmp','r+')
print(f.read(3))
f.seek(5)
f.write('ccccccc')
#不要一边写一边读
f.close() r+打开文件
如果直接写 从头覆盖
如果读了再写 追加
如果seek指定了光标的位置 就在从该位置开始覆盖着写

open

6、模块操作相关

import time #导入time模块

7、帮助方法

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

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

8、和调用相关

def func():pass
print(callable(func)) #参数是函数名,可调用,返回True
print(callable(123)) #参数是数字,不可调用,返回False

判断是否调用

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

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

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

查看内置方法

10、str类型代码的执行

print(123)
"print(456)" #字符串
eval("print(456)") #字符串->转换成python代码去执行 exec("print(789)") num = 1+2+3
num = eval("1+2+3") #执行
print(num) num2 = exec("4+5+6") #执行,没有返回值
print(num2)

11、和数字相关

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

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

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

#绝对值
print(abs(-12)) #返回(除,余)
print(divmod(7,4)) #最小值 最大值
print(min(1,2,3,4))
print(max(1,2,3,4)) #求和
print(sum((1,2,3,4))) #print(sum(1,2,3,4))这个报错因为不是序列
print(sum([1,2,3,4]))
print(sum((1,2,3,4))) #小数精确
print(round(3.14159,1))
print(round(3.14159,2))
print(round(3.14159,3)) #冥运算
print(pow(2,4))
print(2**4)

数学运算

12、和数据结构相关

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

#位置
print(format('test', '<20'))
print(format('test', '>40'))
print(format('test', '^40')) #字符编码的转换
s = "你好"
sb = bytes(s,encoding='utf-8')
print(sb)
ret = sb.decode('utf-8')
print(ret) #格式化输出
print(repr(''))
print(repr(1234))

字符串相关

序列:reversed,slice

#倒叙
l = [1,2,3,4]
print(list(reversed(l)))

reversed

数据集合——字典和集合:dict,set,frozenset

数据集合:len,sorted,enumerate,all,any,zip,filter,map

#直接改变原列表
l = [1,3,5,-2,-4,-6]
l.sort()
print(l) #生成新列表 原列表不变
l2 = [1,3,5,-2,-4,-6]
print(sorted(l2,key=abs,reverse=True))
print(sorted(l2))
print(l2) #为每次取值加序号
l = ['a','b']
for i,j in enumerate(l,1):
print(i,j) #all判断全有 any判断有
print(all([1,2,3]))
print(all([0,2,3]))
print(any([0,1,0]))
print(any([0,0,0])) #配对
l = [1,2,3] #
l2 = {'k':'v'} #
print(zip(l,l2))
print(list(zip(l,l2))) #返回奇数
def is_odd(x):
return x % 2 == 1
filter(is_odd, [1, 4, 6, 7, 9, 12, 17]) #返回平方
L = [1,2,3,4,]
def pow2(x):
return x*x
map(pow2,L)
#之前用过很多次就不再细说

数据集合


三、匿名函数

匿名函数 简单的需要用函数去解决的问题 匿名函数的函数体 只有一行

也叫lambda表达式

#这段代码
def calc(n):
return n**n
print(calc(10)) #换成匿名函数
calc = lambda n:n**n
print(calc(10))

匿名函数

#函数名 = lambda 参数 :返回值

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

匿名函数格式

小练习:

l = [10,11,8,12]
# def func(x):
# return x>10
# print(list(filter(func,l)))
print(list(filter(lambda x:x>10,l))) l = [1,2,3,4]
# def pow2(x):
# return x*x
# map(pow2,l)
print(list(map(lambda x:x*x , l))) dic={'k1':10,'k2':100,'k3':30}
print(max(dic))
func = lambda k:dic[k]
print(max(dic,key = func))
print(max(dic,key = lambda k:dic[k]))

匿名函数练习

预习答案:

#1、题
name=['alex','wupeiqi','yuanhao','nezha']
def sb(str) :
return str + "_sb" print(list(map(sb,name))) #2题
num = [1,3,5,6,7,8]
def even(num) :
return num % 2 == 0 l = list(filter(even,num))
print(l) #4题
for i in range(0,len(portfolio)) :
print(portfolio[i]["name"],portfolio[i]["shares"]*portfolio[i]["price"]) def unit_p(str) :
return str["price"] > 100
print(list(filter(unit_p,portfolio)))

1、2、4题

def read_page(bk_list,n,endline=None):
startline = 5 * (n-1)
endline = endline+startline-1 if endline else startline + 4
# print(startline,endline)
for i in range(startline,endline+1):
print(bk_list[i],end = '') def read_book(filename):
f = open(filename)
book_list = f.readlines()
f.close()
return book_list book_list = read_book('aaa')
line_num = len(book_list) x,y = divmod(line_num,5)
print(line_num,x,y)
if y:
page = x+1
else:
page = x
page = x+1 if y else x
print('一共有%s页'%page)
while True:
page_num = input('请输入您要阅读的页码 : ').strip()
if page_num.isdigit():
page_num = int(page_num)
if page_num < page:
read_page(book_list,page_num)
elif page_num == page:
read_page(book_list,page_num,y)
else:
print('您输入的内容有误')

3题

python函数(6):内置函数和匿名函数的更多相关文章

  1. 学习Pytbon第十天 函数2 内置方法和匿名函数

    print( all([1,-5,3]) )#如果可迭代对象里所有元素都为真则返回真.0不为真print( any([1,2]) )#如果数据里面任意一个数据为真返回则为真a= ascii([1,2, ...

  2. python全栈开发-Day12 三元表达式、函数递归、匿名函数、内置函数

    一. 三元表达式 一 .三元表达式 仅应用于: 1.条件成立返回,一个值 2.条件不成立返回 ,一个值 def max2(x,y): #普通函数定义 if x > y: return x els ...

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

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

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

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

  5. Python 入门基础12 --函数基础5 匿名函数、内置函数

    今日内容: 1.三元表达式 2.列表.元组生成式 | 字典生成式 3.递归 4.匿名函数 5.内置函数 一.三元表达式 三元运算符:就是 if...else... 语法糖 前提:if 和 else # ...

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

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

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

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

  8. python匿名函数 与 内置函数

      一.匿名函数  1.定义: 匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序. 2.语法格式:lambda 参数:表达式 lambda语句中,开头先写关键字lambda,冒号 ...

  9. Py修行路 python基础 (十三)匿名函数 与 内置函数

    一.匿名函数  1.定义: 匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序. 2.语法格式:lambda 参数:表达式 lambda语句中,开头先写关键字lambda,冒号前是 ...

  10. python之路——内置函数和匿名函数

    阅读目录 楔子 内置函数 匿名函数 本章小结 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们 ...

随机推荐

  1. 基于Vue全家桶开发的前端组件管理平台

    项目背景 项目背景是外包类建站公司里,设计环节沉淀了大量可复用组件,设计师往往只需要微调组件就拼凑出页面,交付给前端,理论上这些组件在前端也可以复用,但实际上前端每次都要重新实现整个页面,浪费很多人力 ...

  2. GIS与水文分析(1)GIS与水文学

    GIS与水文分析(1)GIS与水文学 对于大部分GIS从业人员或者利用GIS作为研究方向的人员来说,水文学过于专业,更偏重于理论化,很难从GIS的角度来模拟和分析水文的过程.这其实是个普遍性的问题,任 ...

  3. 一个编程菜鸟的进阶之路(C/C++)

    学编程是一条不归路,但我义无反顾.只能往前冲,知道这个过程是痛苦的,所以我开通这个博客,记录自己在编程中遇到的问题和心得,一是希望可以帮助跟我一样遇到同样问题的人,二是把这作为对自己的勉励及回忆:

  4. ELK-初识Elasticsearch

    第一篇:初识Elasticsearch 1.安装 Elasticsearch 要求 java8+的环境,推荐使用 Oracle 1.8.0_131版本的JDK.Java JDK的安装此处不做介绍.这里 ...

  5. JS对象创建常用方式及原理分析

    ====此文章是稍早前写的,本次属于文章迁移@2017.06.27==== 前言 俗话说"在js语言中,一切都对象",而且创建对象的方式也有很多种,所以今天我们做一下梳理 最简单的 ...

  6. 持续集成篇-- SonarQube代码质量管理平台的安装

    视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221 环境:CentOS 6 ...

  7. Spring Web 配置文件加载路径问题

    Spring:   定位   载入   注册 我们常用的加载context文件的方法有如下三个: 1.FileSystemXmlApplicationContext 这个方法是从文件绝对路径加载配置文 ...

  8. Mongodb 参数说明及常见错误处理

       在 CentOS7 上安装 MongoDB 1 通过 SecureCRT 连接至 CentOS7 服务器: 2 进入到 /usr/local/ 目录:cd /usr/local 3 在当前目录下 ...

  9. Apollo框架试玩

    2017年7月5日,百度举行了AI开发者大会,在会上发布了Apollo项目,并进行了演示,该项目在Github上已经能够被访问.出于一个程序员的好奇,昨天试玩了一把,确实不错. http://apol ...

  10. VB6之WebBrowser控件

    UI短手或者GDI+用烦的童鞋可以借用WebBrowser打造漂亮的程序界面,只需要下载一个好看点的html代码就够了. 引用: Microsoft Html Object Library 部件: M ...