python学习之最常用的内置函数

python学习之最常用的内置函数

Python 内置函数总共有70余个(通常把内置类也统称为内置函数),覆盖面广,功能强大。不过,对于初学者在初级阶段,掌握下面几个函数是当务之急。

(1) 控制台输出函数 print()

print() 应该是每一个初学者首先接触到的函数,也一定用得非常熟练。我们知道,print() 函数一次可以打印多个对象,打印对象可以是任意类型。此外,print() 函数还有4个默认参数,灵活运用,方能得心应手。

print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)

  • objects – 零个或多个输出对象。输出多个对象时,需要用半角逗号分隔
  • sep – 用来间隔多个对象,默认值是一个空格
  • end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串
  • file – 要写入的文件对象
  • flush – 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新

(2) 控制台输入函数 input()

input() 函数常用于程序执行过程中接收用户输入的参数,用户敲击回车键,函数即返回用户输入的字符串,但不包括回车符。因input() 函数本身具备IO阻塞的功能,所以也可用于作为程序调试断点来使用。input() 函数没有默认参数,但接受一个字符串作为输入提示信息。

>>> nums = input('请输入3个整数,中间以空格分割,回车结束输入:')
请输入3个整数,中间以空格分割,回车结束输入:3 4 5 6
>>> print(nums) # 请注意,nums是一个字符串,不是整数
3 4 5 6
>>> [int(item) for item in nums.split()] # 这样才可以把输入的字符串变成3个整数
[3, 4, 5, 6]

(3) 可迭代对象长度函数 len()

len() 函数也是初学者接触最早、最容易记住的函数之一,len 是 length 简写,该函数用于返回列表、元祖、字典、字符串等可迭代对象的长度(或称为元素数量)。至于什么是可迭代对象,暂时可以不用深究,随着学习的深入,会逐步理解的。

(4) 序列生成器函数 range()

通常我们是在学习 for 循环的时候,认识的 range() 函数。最初(py2时代),range() 函数返回的是一个列表,因为太耗内存,所以进入新时代(py3时代)之后,range() 函数不再返回列表,而是range类了。

(5) 格式化输出函数 format()

虽然这里提到的是 format() 函数,但大多数情况下,我更喜欢用%去做格式化输出。读者可以通过下面的例子体会一下两种格式化方法的差异。
下面给出用%去做格式化输出的常用符号速查表。

符号功能
%d,%i转换为带符号的十进制形式的整数
%o转换为带符号的八进制形式的整数
%x,%X转换为带符号的十六进制形式的整数
%e转化为科学计数法表示的浮点数(e 小写)
%E转化为科学计数法表示的浮点数(E 大写)
%f,%F转化为十进制形式的浮点数
%g智能选择使用 %f 或 %e 格式
%G智能选择使用 %F 或 %E 格式
%c格式化字符及其 ASCII 码
%r使用 repr() 将变量或表达式转换为字符串
%s使用 str() 将变量或表达式转换为字符串

(6) 排序函数 sorted()

排序是比较常见的需求。排序函数 sorted() 不会改变原有的数据结构,而是返回一个新的排序结果。这一点,和列表类的 sort() 方法不同。列表类的 sort() 方法改变了列表自身,且无返回值。

>>> sorted([3,2,7,1,5]) # 一维列表排序
[1, 2, 3, 5, 7]
>>> sorted([3,2,7,1,5], reverse=True) # 一维列表排序,逆序输出
[7, 5, 3, 2, 1]

(7) 文件操作函数 open()

文件读写是程序员最基本的技能之一,必须熟练掌握。好在Python的文件操作非常简单,很容易上手。通常文件读写时,不管正常还是非正常结束,一定要关闭文件——这需要捕获异常并进行处理。为了简化代码,使之更加优雅,我习惯使用 with - as 来操作文件。

打开文件有多种模式,详见下表:

mode参数参数概述参数功能
r / rt只读模式(默认)只能获取文本内容,不能写入
rb二进制只读模式使用二进制获取文本内容, 通常用于获取图片视频等非文本
r+读写追加用于读写,文件指针放在内容开头
rb+二进制读写追加用于二进制读写,文件指针放在内容开头
w / wt只写模式用于写入内容,会将原本的内容覆盖
w+只写追加用于写入内容,会在原本的内容之后续写
wb二进制只写模式用于写入二进制内容,会将原本的内容覆盖 通常用于写入图片视频等非文本
wb+二进制只写追加用于写入二进制内容,会在原本的内容之后续写 通常用于写入图片视频等非文本
a / at读写追加用于读取或写入内容,写入会在原本的内容之后续写 没有文本则创建文本
ab二进制读写追加用于读取或写入二进制内容,写入会在原本内容之后续写 没有文本则创建文本
a+读写追加用于读取或写入内容,写入会在原本的内容之后续写 没有文本则创建文本
ab+二进制读写追加用于读取或写入二进制内容,写入会在原本内容之后续写 没有文本则创建文本

下面的例子,演示了如何将数据写入到csv文件,又如何读出csv文件中的数据。

>>> with open(r'd:\csv_data.csv', 'w') as fp: # 写csv文件for line in [[0.468,0.975,0.446],[0.718,0.826,0.359]]:ok = fp.write('%s\n'%','.join([str(item) for item in line]))>>> with open(r'd:\csv_data.csv', 'r') as fp:print(fp.read())0.468,0.975,0.446
0.468,0.975,0.446>>> with open(r'd:\csv_data.csv', 'r') as fp: # 读csv文件for line in fp.readlines():print('%s - %s - %s'%tuple(line.strip().split(',')))0.468 - 0.975 - 0.446
0.468 - 0.975 - 0.446
12345678910111213141516

(8) 类型相关函数 type()/isinstance()

对于初学者来说,运行代码时出了问题是最头疼的事儿:根本不知道发生了什么,又该从何处入手。如果不是缩进错误,或者找不到模块一类的初级错误,那么,查看变量的类型,也许是最值得一试的调试方法。type() 就是用于查看对象类型的函数。

>>> type(5)
<class 'int'>
>>> type('ssdf')
<class 'str'>
>>> type([])
<class 'list'>
>>> type(print)
<class 'builtin_function_or_method'>
>>> type(range(5))
<class 'range'>
12345678910

但是,有很多同学了解了 type() 之后,喜欢用它来做类型判断,这是不正确的。用于类型判断的函数是isinstance(),请看:

>>> a = [3,4,5]
>>> b = ('x', 'y')
>>> c = dict()
>>> d = 'python'
>>> isinstance(a, list)
True
>>> isinstance(b, list)
False
>>> isinstance(c, (dict,str))
True
>>> isinstance(d, (dict,str))
True
>>> isinstance(b, (dict,str))
False
1234567891011121314

(9) 特殊功能函数 enumerate()/zip()/map()/chr()/ord()

遍历列表、字符串等可迭代对象的时候,如果我们想同时得到元素的索引序号,enumerate() 函数就可以派上用场了。enumerate() 返回可迭代对象的索引和元素组成的元组的迭代对象,所以,不用担心该函数的效率和资源消耗情况,放心使用好了。

>>> for index, item in enumerate([True, False, None]):print(index, item, sep='->')0->True
1->False
2->None
>>> for index, item in enumerate('xyz'):print(index, item, sep='->')0->x
1->y
2->z
123456789101112

zip() 函数也有一个经典的应用场景:同时遍历多个列表。

>>> a = ['x','y','z']
>>> b = [3,4,5]
>>> for k, v in zip(a,b):print(k, v, sep='->')x->3
y->4
z->5
12345678

map() 函数可以理解为对列表中的每一个元素做一次计算,这个计算由函数参数指定。这个作为参数的函数,可以是普通的函数,也可以是 lambda 匿名函数。我们以对列表中各元素开三次方为例,演示一下man() 函数的用法。

>>> def extract(x): # 开3次方return pow(x, 1/3)>>> result = map(extract, [7,8,9]) # 使用函数extract()对列表元素逐一开3次方,返回一个迭代对象
>>> list(result) # 将迭代对象转为list
[1.912931182772389, 2.0, 2.080083823051904]
>>> list(map(lambda x:pow(x, 1/3), [7,8,9])) # 使用lambda函数,更简洁
[1.912931182772389, 2.0, 2.080083823051904]
12345678

chr() 函数返回 ascii 编码值对应的字符,ord() 函数返回字符的 ascii 编码值, 二者是互逆的操作。

>>> chr(65)
'A'
>>> ord('Z')
90
>>> for i in range(26):print(chr(65+i), sep='', end='')ABCDEFGHIJKLMNOPQRSTUVWXYZ
12345678

(10) 数学函数 sum()/max()/min()/abs()/pow()/divmod()/round()

Python 内置的数学计算与统计函数不多,但基本够用。不过,如果你需要对数函数和三角函数的话,你恐怕得导入 manth 模块(标准模块)或者其他模块了(比如 numpy 等)。需要提醒大家的是,很多教科书说,做开方运算就得导入 manth 模块,其实,内置函数 pow() 是既可以乘方,也可以开方的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android应用开发控件——Gallery和ImageSwitcher

Gallery组件主要用于横向显示图像列表&#xff0c;不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说&#xff0c;如果为Gallery组件指定了10张图像&#xff0c;那么当Gallery组件显示到第10张时&#xff0c;就不会再继续显示了。这虽然在大多数时候没有什么关系…

Windows7搭建FTP文件

Windows7搭建FTP文件 第一步&#xff1a;在任意一盘创建一个共享文件夹&#xff0c;这里我们把它命名为“ftp文件共享”&#xff0c;把需要共享的文件放里面&#xff0c;如图所示 第二步&#xff1a;安装IS组件 开始菜单→控制面板→程序→程序和功能→打开或关闭Windows功能…

nagios整合cacti2011版(五)

Nagios使用NSClient监控远程Windows主机下载NSClient-Win32-0.3.8.msi并安装。http://files.nsclient.org/x-0.3.x/NSClient-0.3.8-Win32.msi到安装目录打开NSC.ini文件进行修改&#xff1a;在[modules]模块&#xff0c;将除CheckWMI.dll和RemoteConfiguration.dll外的所有dll文…

Win7搭建http文件共享

Win7搭建http文件共享 作者&#xff1a;莫咸海 第一步&#xff1a;在除C盘以外的盘符中新建一个共享文件夹&#xff0c;命名为“http文件共享”&#xff1b; 将需要共享的文件放在“http文件共享”文件夹中。 第二步&#xff1a;安装IIS组件。开始菜单->控制面板->程序…

大数运算(续)

ACM竞赛中另一个基础运算&#xff0c;大数的阶乘(factorial)&#xff0c;其实阶乘中要算超出int表示范围的阶乘这是个十分浩瀚的工程&#xff0c;其实就是很多个大数先乎乘积再求和。 真不敢想象一个位数超过百位的数字&#xff0c;它的阶乘&#xff0c;这个目前不考率&#xf…

Visualbox中linux的网络配置

在visualbox中刚装好虚拟机后&#xff0c;默认没有配置eth0&#xff0c;所以用putty工具无法连接上虚拟机中的系统。 配置eth0的方法如下&#xff1a; 用vim打开eth0的配置文件&#xff1a;/etc/sysconfig/network-scripts/ifcfg-eth0 将以下内容拷入此配置文件中 DEVICE"…

以命令方式从ftp服务器上下载和上传文件

** 以命令方式从ftp服务器上下载和上传文件 wang ** 1、“开始”→“运行”&#xff0c;输入“cmd“&#xff0c;打开命令提示符&#xff1b; 2、在命令提示符内输入”ftp“并回车&#xff0c;进入ftp提示符ftp> 3、在ftp>输入 open 192.168.2.5 回车&#xff1b; 如…

使用Html.DropDownList

在MVC项目中&#xff0c;需要使用DropDownList绑定Model数据。 目前使用的方法&#xff1a; 先定义SelectListItem的list类型 <%var VisitCaselist newList<SelectListItem>() { (newSelectListItem() { Text "空", Value "空", Selectedtrue}),…

在windows环境下ftp服务器的文件上传和下载

在windows环境下ftp服务器的文件上传和下载 mo 一、上传本地文件 第一步&#xff1a;登录FTP服务器。在开始菜单中输入cmd&#xff0c;回车进入。输入ftp进入服务器&#xff0c;输入命令格式&#xff1a;open FTP服务器地址 端口&#xff0c;例如open 192.168.2.5 21 如果FTP端…

GPCC安装以及踩坑经历

gpcc安装以及踩坑经历 官方下载地址文档 https://network.pivotal.io/products/pivotal-gpdb#/releases/29190安装开始之前 chown gpadmin:gpadmin /usr/local 安装完成之后 chown root:root /usr/local添加访问权限 vim /opt/greenplum/data/master/gpseg-1/pg_hba.conflo…

net自带二进制序列化,XML序列化和ProtoBuf序列化的压缩对比

测试结果&#xff1a;ProtoBuf Length:115BinaryFormatter Length:1177XmlSerializer Length:814xml length:825做了一个各种序列化方案的压缩比例测试&#xff0c;可以看到protobuf序列化后的大小是xml原始格式的8分之一&#xff0c;是xml序列化后的8分之一&#xff0c;是二进…

运维的未来之路:在技术革命中保持关键地位

在快速发展的IT界&#xff0c;运维工程师向来扮演着无可或缺的角色。他们不仅确保系统的平稳运行&#xff0c;还需要及时应对突发事件&#xff0c;优化各项技术实施。然而&#xff0c;伴随着技术的迭代和新工具的出现&#xff0c;一些人开始担忧35岁成为运维人员的职业半衰期。…

Metrics_collector还没有添加到共享预加载库(shared_preload_libraries)中

gpcc踩坑 本文最大的锅&#xff0c;最大的坑来了 安装完成之后会报以下错误&#xff01;你可以完全忽略错误的解决过程直接跳到最后&#xff01; Metrics_collector还没有添加到共享预加载库(shared_preload_libraries)中。请添加它以启用指标收集。详见文档。 error alert …

Ogre读取中文路径名的文件失败的解决办法

Ogre的文件读取是使用的标准库的io库读取的&#xff0c;众所周知的是&#xff0c;在vs2005是存在着bug的。因此想要一劳永逸的解决这个办法唯有去修改Ogre的源代码&#xff0c;以下为修改方法&#xff1a;打开OgreFileSystem.cpp文件&#xff0c;找到FileSystemArchive::open方…

perl调用shell

1 systemperl也可以用system调用shell的命令,它和awk的system一样,返回值也是它调用的命令的退出状态.如果向system传递一个字符串作参数,则perl会调用shell来执行这个命令,在这个字符串内也就不可以有perl 的变量了;如果传递多个字符串作参数,则perl会自己执行这个命令,且可以…

硬盘类型的区分

硬盘接口类型的区分 1.IDE接口 IDE接口硬盘&#xff0c;IDE也称之为ATA接口&#xff0c;是一种比较老的接口硬盘&#xff0c;从刚开始生产至今&#xff0c;共推出了7个不同的版本&#xff0c;分别是&#xff1a;ATA-1 3.3MB/s、ATA-2 16.6MB/S、ATA-3 16.6MB/s、ATA-4 33MB/s…

Linux Software RAID的rebuild速度。

Linux Software RAID的rebuild速度是根据服务器负载情况自动调节的&#xff0c;默认的rebuild比较慢。默认的速度一般如下&#xff1a; [rootx003 ~]# sysctl dev.raid.speed_limit_min dev.raid.speed_limit_min 1000这个默认速度下&#xff0c;Rebuild一块1T的硬盘好好几天时…

bind配置文件解析

bind配置文件解析 bind作为一般的dns服务器的解析服务。 /etc/named.conf #bind的全局配置文件 /etc/named.rfc1912.zones #域配置文件 /var/named/ #存放zone&arpa文件 /var/log/messages #查看配置过程中出错信息 其中named.c…

硬盘结构

作者&#xff1a;Liuweifei 硬盘结构 1.硬盘结构 ​ 硬盘大致由盘片、读写头&#xff08;磁头&#xff09;、马达、底座、电路板等几大项组合而成。 ​ 硬盘的每一个盘片都有两个盘面&#xff0c;即上、下盘面。每个盘面都能利用&#xff0c;都可以存储数据&#xff0c;成为…

tomcat配置多站点

下面关于TOMCAT6.0配置多站点的问题怎么解决&#xff1f; [互联网 Windows ] 收藏 转发至天涯微博 悬赏点数 10 3个回答 夏洛叶 2009-02-08 09:26:30 在F:\Tomcat 6.0\conf\server.xml配置是这样的,想同时启动5个站点, <Host name"bbb" debug"0" appB…