• python中print和input的底层实现


    print

    print的底层通过sys.stdout.write() 实现

    import sys
    
    print('hello')
    print('world')
    print(520)
    sys.stdout.write('hello')
    sys.stdout.write('world')
    # sys.stdout.write(520)  # TypeError: write() argument must be str, not int
    
    

    控制台输出 ```python hello world 520 helloworld
    
    <br>
    ## 小结
    sys.stdout.write()和print都是向屏幕输出内容,区别在于:
    - sys.stdout.write()没有自动换行,print有
    - <b><font color='#ff0000'>sys.stdout.write()只能写入字符串</font></b>,print可以写入任意数据类型
    
    
    <br>
    ## input
    Python3中的input()使用`sys.stdin.readline()`实现
    ```python
    import sys
    
    a = sys.stdin.readline()
    print(a, len(a))
    
    b = input()
    print(b, len(b))
    
    
    

    控制台输出结果 ```python hello hello 6 hello hello 5
    为什么两个长度不一样呢?这是因为<b><font color='#ff0000'>sys.stdin.readline()把结尾的换行符也算进去了</font></b>,6和hello不在一行也可以证明这一点
    <br>
    sys.stdin.readline()还可以传入参数,指定读取前几个字符
    
    ```python
    c = sys.stdin.readline(2)
    print(c, len(c))
    
    

    控制台输出

    hello
    he 2
    
    

    当传入的参数大于输入的字符的长度时,输出所有字符 ```python c = sys.stdin.readline(10) print(c, len(c))
    <br>
    控制台输出结果
    ```python
    hello
    hello
     6
    
    

    当传入的参数为负数时,表示获取整行 ```python d = sys.stdin.readline(-3) print(d, len(d))
    <br>
    控制台输出结果
    ```python
    helloworld
    helloworld
     11
    
    

    当一次没有读取完时,下一次读取将会从上次的结束位置开始,这一点与文件类似 ```python c = sys.stdin.readline(6) print(c, len(c))

    d = sys.stdin.readline(4)
    print(d, len(d))

    <br>
    控制台输出结果
    ```python
    helloworld
    hellow 6
    orld 4
    
    

    sys.stdin.readline()不能像input一样传入字符串作为提示信息 ```python username = input("username:")

    password = sys.stdin.readline("password:")

    <br>
    控制台输出结果
    ```python
    username:robin
    Traceback (most recent call last):
      File "D:/input_print.py", line 50, in <module>
        password = sys.stdin.readline("password:")
    TypeError: 'str' object cannot be interpreted as an integer
    
    

    ## 小结 sys.stdin.readline()和input都是输入内容,区别在于: - sys.stdin.readline()读取所有字符,包括结尾的换行符 - sys.stdin.readline()可以设置单次读取的字符个数,iinput不行 - sys.stdin.readline()不能设置提示信息,input可以
  • 相关阅读:
    nvm的安装与使用
    webpack中import动态设置webpackChunkName方法
    css在背景图下加渐变色
    js实现时间戳转换
    js实现随机数和随机数组
    js实现导航自动切换请求数据
    jq、js获取select中option上的value值以及文本值
    js、jq实现select 下拉选择更多
    软件测试
    php
  • 原文地址:https://www.cnblogs.com/zzliu/p/10630437.html
Copyright © 2020-2023  润新知