浅析 python中的 print 和 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) Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
""" # 附带翻译哦!
将值打印到溪流或系统中。默认stdout。
可选关键字参数:
文件:类似文件的对象(流);默认为当前的systdout。
sep:在值之间插入字符串,默认空格。
结束:在最后一个值之后附加的字符串,默认换行。
python 源码
print()用sys.stdout.write() 实现
import sys
print('hello')
sys.stdout.write('hello')
print('new')
# 结果:
# hello
# hellonew
sys.stdout.write()结尾没有换行,而print()是自动换行的。另外,write()只接收字符串格式的参数。
print()能接收多个参数输出,write()只能接收一个参数。
input ()
先看源码!
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
附带 翻译
从标准输入中读取一个字符串 a 。后面的新线被剥掉了。
如果给定的话,提示字符串会被打印到标准输出,而不需要a
在阅读输入之前,跟踪新行。
如果用户点击了EOF(nix:Ctrl-D,Windows:Ctrl-Z+Return),就会产生EOFError。
在nix系统上,如果可用,则使用readline。
input 用 sys.stdin.readline() 实现
import sys a = sys.stdin.readline()
print(a, len(a)) b = input()
print(b, len(b)) # 结果:
# hello
# hello
#
# hello
# hello 5
readline()会把结尾的换行符也算进去。
readline()可以给定整型参数,表示获取从当前位置开始的几位内容。当给定值小于0时,一直获取这一行结束。
import sys a = sys.stdin.readline(3)
print(a, len(a)) # 结果:
# hello
# hel 3
readline()如果给定了整型参数结果又没有把这一行读完,那下一次readline()会从上一次结束的地方继续读,和读文件是一样的。
import sys a = sys.stdin.readline(3)
print(a, len(a)) b = sys.stdin.readline(3)
print(b, len(b)) # 结果
# abcde
# abc 3
# de
#
input()可以接收字符串参数作为输入提示,readline()没有这个功能。
浅析 python中的 print 和 input 的底层区别!!!的更多相关文章
- Python中的print、input函数以及Python中交换两个变量解析
一.Python中的值交换操作 首先明确一点点,Python中的一切都是面向对象的,可以理解为Python的中一切都是对象. 我们知道Java也是面向对象的语言,但是在Java中定义一个值变量如下: ...
- 深入浅析python中的多进程、多线程、协程
深入浅析python中的多进程.多线程.协程 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源 ...
- 【转】浅析Python中的struct模块
[转]浅析Python中的struct模块 最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概 ...
- 在python中使用print()时,raw write()返回无效的长度:OSError: raw write() returned invalid length 254 (should have been between 0 and 127)
写出一个不是code的bug,很烦恼,解决了挺长时间,都翻到外文来看,不过还是解决了,只尝试了一种简单可观的方法,希望对大家有用 我正在使用Django与Keras(tensorflow)来训练一个模 ...
- python中dtype,type,astype的区别
python中dtype,type,astype的区别 type() dtype() astype() 函数名称 用法 type 返回参数的数据类型 dtype 返回数组中元素的数据类型 astype ...
- Python中的raw_input()和input()
raw_input()和input()都是python中的内建函数,用于读取控制台用户的输入,但有所区别: [nr@localhost conf]$ python Python 2.7.5 (defa ...
- 浅析python 中__name__ = '__main__' 的作用
引用http://www.jb51.net/article/51892.htm 很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码 ...
- 【转】浅析python 中__name__ = '__main__' 的作用
原文链接:http://www.jb51.net/article/51892.htm 举例说明解释的非常清楚,应该是看到的类似博文里面最简单的一篇: 这篇文章主要介绍了python 中__name__ ...
- 浅析Python中的struct模块
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...
随机推荐
- 【Netty】netty学习之nio了解
[一]五种IO模型: (1)阻塞IO(2)非阻塞IO(任务提交,工作线程处理,委托线程等待工作线程处理结果的同时,也可以做其他的事情)(3)IO复用模型.(委托线程接收多个任务,将任务提交给工作线程. ...
- java编程之POI读取excel表格的内容
07版本的excel需要另外加一个jar包.xbean.jar的jar包 读取代码模板.利用模板介绍读取excel的一些poi的api这是重点 /** * 读取excel文件 * @Title: re ...
- keycloak 了解
Keycloak 是一个针对Web应用和 RESTful Web 服务提供 SSO 集成.基于 OAuth 2.0 和 JSON Web Token(JWT) 规范.目前用于实现 JBoss 与 Wi ...
- 如何批处理多个MySQL文件
@echo off CHCP 65001 --设置cmd编码for %%i in (E:\sql\*.sql) do ( --多个MySQL SQL文件的存放目录echo excute %%i ...
- 骰子点数概率__dp
骰子点数概率 时间限制:1 秒 内存限制:32 兆 题目描述: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入n,打印出S的所有可能的值出现的概率. 输入: 输入包括一个整数N(1<= ...
- zabbix 布署实践【8 监控windows server】
参考http://www.cnblogs.com/likehua/p/3968689.html的思路,我安装的是zabbix 3.0 从zabbix官网下载windown的 Zabbix pre-co ...
- Ubuntu---samba(安装、配置、使用)OK
安装 [xt@butbueatiful ~]$ sudo apt-get install samba 创建共享目录 [xt@butbueatiful ~]$ mkdir /home/xt/share ...
- STL容器的resize方法
刚才写DFS程序,为了加个创建DFS树然后再次遍历的功能,把初始化的代码给封装到init()函数里,然后直接调用之后对同样是邻接表表示的DFS树进行DFS. 然后令人诧异的是竟然没有打印结果,调试发现 ...
- 安卓笔记-adb指令、打包安装
adb install -r -s xxx.apk -r重装 -s 安装到sd卡 安装软件 adb uninstall -k 包名 -k 只卸载程序不清除数据 adb ...
- Java 静态对象 static
什么是静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立. 然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了 ...