python我最开始学的时候,总感觉各种语法怪里怪气,一个函数居然有那么多玩法,就拿print函数来说,像c/c++的printf 或者cout就是最简单的输出,java的system.out.println也是,但是就感觉python的输出花里胡哨的许多, 一个print(“hello wolrd”)里面就藏有很多玄机,点进去看他源码
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.
"""
pass
这里说一句,python的这些基本的函数,比如print(), sum(), open()等函数都存于builtins.py下,这是一个内置模块,里面记载了许多内置函数、类的定义,但点开看你就会发现,里面的函数、类都没有具体的实现,只写了一个pass,据我所知,python的这些具体实现都是用c编写的,所看到的这个就相当于是一个帮助文档的东西。
看看这个print()方法,self就类似于java中的this关键字(在java里,每个函数的第一个参数都是一个隐藏的this指针,你不写他自动给你加上去),*args代表可变参数,这就说明你print里面输入多少个参数都没问题,print()都能给你输出来,sep=""是指定值传参,sep全称separate,就是每个参数中间间隔是啥,end=’’ 也是指定值传参,指定输出一句的末尾字符
总结
这只是其中一个函数,但写这篇博客的目的不是为了让你知道print函数的用法,目的是为了告诉你python的一种学习方法,去看他背后的源码,把他花里胡哨的外衣揭下来,这样能让我们更好的理解python里面各种内置函数,内置类的作用原理,学习最重要的就是去看他背后的底层原理,不论是python还是java,对于任何一个技术一门语言,道理都是这样,先去上手,上手的同时去关注一下他的底层逻辑,这样很多心中的疑惑都能解开