本文出自“Python为什么”系列,在正式开始之前,我们就用之前讨论过的 pass语句 和 …对象 作为例子,看看 Python 的函数是怎样“无中生有”的: 可以看出,我们定义的两个函数都没有写任何的...return 语句,但是在函数调用后,都能取到一个返回值。...不管有没有写 return,它们都会执行 return 的逻辑,而且默认的返回值就是 None。 那么,问题来了:Python 的函数为什么能默认返回 None 呢?它是如何实现的呢?...答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None 值返回(出自:compile.c): 也就是说,如果定义的函数没有返回值...那么,这就会引出新的问题:Python 为什么要求函数都要有返回值呢?为什么它不像某些语言那样,提供一个 void 关键字,支持定义无返回值的空函数呢?
在使用 Python 开发的过程中,避免不了会用到递归函数。但递归函数的返回值有时会出现意想不到的情况。 下面来举一个例子: >>> def fun(i): ... ...return i ... >>> r = fun(0) >>> print(r) 比如上面这段代码,乍一看没什么问题,但返回值并不是我们期望的 5,而是 None。...>>> print(r) None 要解决这个问题也简单,就是在执行递归调用的时候,加上 return 语句。 修改之后的代码如下: >>> def fun(i): ... ...最后补充一句,如果想要了解这背后深层的原理,可以看看函数调用栈相关的资料,这里就不过多介绍了。 本文就到这里了,如果觉得有用的话欢迎点赞,转发和关注,谢谢。...面试题汇总: 包括 Python、Go、Redis、MySQL、Kafka、数据结构、算法、编程、网络等各种常考题。
一、函数 None 返回值 1、空返回值 在 Python 函数中 , return 返回值是可选的 , 函数可以没有返回值 ; def 函数名(函数参数): """函数文档字符串(可选)"""...# 函数体 # return 返回值 (可选) Python 函数中没有显示定义返回值 , 那么返回的就是 特殊字面量 None , 其类型是 ; None...表示没有实际意义 , 返回空 , 不需要处理返回值信息 ; Python 中返回 None 相当于 Java / C / C++ 中的 void Kotlin 中的 Unit 等 空返回值 ; 2、代码示例...return 关键字返回 None 在该示例中 , 比上一个示例多了 return None 返回值 , 其执行效果与没有返回值一模一样 ; 代码示例 : """ 接收 函数 None 返回值示例 ""...None 二、None 值应用场景 ---- 1、None 值应用场景简介 函数 None 返回值应用场景 : 函数返回值 : 表示函数没有返回值 ; 用于 if
Python print() 函数输出的信息在一行。 print() 函数是 Python 中的一个重要函数,因为它用于将 Python 输出重定向到终端或者重定向到文件。...默认情况下, print() 函数每次都在新行上打印,这是由于 Python 文档中 print() 定义决定的。 为什么 Python 的 print 函数默认在新行上打印?...如何在 Python 中同一行上打印 有时,我们需要在一行上打印字符串,这在我们用 Python 读取文件时特别有用,当我们读取文件时,默认情况下在行之间会得到一个空白行。...当我们打印内容时,结果如下: 额外的空行是由于文件中每一行末尾都有 \n ,而 n\ 将光标移动到下一行,由于 print 函数也会默认会输出空白行,所以读取文件输出之后多出了一个空行。...让我们看看另一个例子,可以遍历一个列表,并用 end ='' 在同一行上打印它们。
,因为只有在函数实际运行时才会给该参数赋值。...builtins__': , 'value': 5, 'double': } 看最后一行...:不仅 value 存储在 locals() 返回的字典中,函数 double() 本身也存储在那里!...input 和 print:基本功能 input 和 print 可能是 Python 中用得最广泛的两个函数,很多学习者初学之时,经常用它们,看起来很简单,比如 input 接收一行文本,print..., file=f) ---- **补充知识:**使用上下文管理器 在函数 print() 中,默认情况下 file=sys.stdout ,则会将所要打印的内容输出到控制台,如果将 sys.stdout
在最后一个文件的最后一行被读取之后,返回该行的行号。 fileinput.filelineno() 返回当前文件中的行号。 在第一行被读取之前,返回 0。...在最后一个文件的最后一行被读取之后,返回此文件中该行的行号。...在第一行被读取之前,此函数将不会生效;它不能被用来跳过第一个文件。 在最后一个文件的最后一行被读取之后,此函数将不再生效。 fileinput.close() 关闭序列。 7....在第一行被读取之前,此函数将不会生效;它不能被用来跳过第一个文件。 在最后一个文件的最后一行被读取之后,此函数将不再生效。 fileinput.close() 关闭序列。 7....在第一行被读取之前,此函数将不会生效;它不能被用来跳过第一个文件。 在最后一个文件的最后一行被读取之后,此函数将不再生效。 fileinput.close() 关闭序列。 7.
fileinput.filenam() 返回当前被读取的文件名。 在第一行被读取之前,返回 None。 fileinput.fileno() 返回以整数表示的当前文件“文件描述符”。...当未打开文件时(处在第一行和文件之间),返回 -1。 fileinput.lineno() 返回已被读取的累计行号。 在第一行被读取之前,返回 0。...在最后一个文件的最后一行被读取之后,返回该行的行号。 fileinput.filelineno() 返回当前文件中的行号。 在第一行被读取之前,返回 0。...在最后一个文件的最后一行被读取之后,返回此文件中该行的行号。...在第一行被读取之前,此函数将不会生效;它不能被用来跳过第一个文件。 在最后一个文件的最后一行被读取之后,此函数将不再生效。 fileinput.close() 关闭序列。 7.
fileinput.filenam() 返回当前被读取的文件名。在第一行被读取之前,返回 None。 fileinput.fileno() 返回以整数表示的当前文件“文件描述符”。...当未打开文件时(处在第一行和文件之间),返回 -1。 fileinput.lineno() 返回已被读取的累计行号。在第一行被读取之前,返回 0。在最后一个文件的最后一行被读取之后,返回该行的行号。...fileinput.filelineno() 返回当前文件中的行号。在第一行被读取之前,返回 0。在最后一个文件的最后一行被读取之后,返回此文件中该行的行号。...在第一行被读取之前,此函数将不会生效;它不能被用来跳过第一个文件。在最后一个文件的最后一行被读取之后,此函数将不再生效。 fileinput.close() 关闭序列。 7....写在最后 fileinput 是对 open 函数的再次封装,在仅需读取数据的场景中, fileinput 显然比 open 做得更专业、更人性,当然在其他有写操作的复杂场景中,fileinput 就无能为力啦
last_row = res.pop().decode('utf-8').strip() # 再次获取最后一行结果 if not last_row: ... last_row = res.pop().decode('utf-8').strip() # 再次获取最后一行结果 if not last_row: ... last_row = res.pop().decode('utf-8').strip() # 再次获取最后一行结果 if not last_row: ... last_row = res.pop().decode('utf-8').strip() # 再次获取最后一行结果 if not last_row: ...pool.map 多参数 如果方法,有多个参数,需要借用偏函数实现。 完整代码如下: #!/usr/bin/env python3 # coding: utf-8 #!
查找一个值是否在容器中要用in而不是用index然后去检查其返回值是不是>0... 10. print a, b, c, print会自动在每个变量后加一个空格,最后以逗号结尾可以防止调用print...语句和语法 Python要写超过一行的语句,需要一对符号的语句或者在前一行后加上'\',与C相同,第二种不推荐,因为任何第二种的情况都可使用()来代替 Python中的switch...对seq列表中的所有的的seq每项依次调用function,将其返回值构建列表,如果functon为None则直接返回seq中的值 map(lambda x, y: y / x, time...在Python中所有的都是对象,函数也不例外。 def定义一个函数对象,定义的对象可赋值,lambda函数同理。...在Python中只能是一行,可以使用';',但不能使用for/while/if,虽然使用某些技巧可以实现但不推荐,系统自带的map/reduce/filter等函数比较好用。
函数 函数是代码的一种组织形式 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数,无返回结果的叫过程,python不加以区分...参数:负责给函数传递一些必要的数据或者信息 形参(形式参数):在函数定义的时候用到的参数,没有具体值,只是一个占位符号 实参(实际参数):在调用函数的时候输入的值 返回值:调用函数的时候的一个执行结果...使用return返回结果 如果没有值需要返回,我们推荐使用return None表示函数结束 函数一旦执行return,则函数立即结束 如果函数没有return关键字,则函数默认返回None # 形参和实参的案例...函数的文档的作用是对当前函数提供使用相关的参考信息 文档的写法: 在函数内部开始的第一行使用三引号字符串定义符 一般具有特定格式 参考案例 文档查看 使用help函数,形如 help(func) 使用...: 此函数没有返回值
我们在之前的函数调用之后发现运行的结果都是函数体内print()打印出来的结果,但是有时候为了方便函数参与二次运算,我们让函数体内不输出任何结果,而是把函数本身就当做一种结果,输出这种结果的方式就可以理解为返回函数的结果...,python用return关键词来返回。...二、return的作用 同时return还有结束函数代码块的功能,return之后的下一行语句不会被执行。 注意:有返回值的函数一般直接调用函数名是不执行任何结果的,赋值给变量后才会返回结果。...如果一个函数没有return语句,其实它有一个隐含的语句,返回值是None,类型也是'None Type'。print是打印在控制台,而return则是将后面的部分作为返回值。”...以上是关于Python函数返回值类型和帮助函数的讲解,新手看不懂得话可以去Python自学网看对应的视频讲解,会更加详细。
sample 在一个列表(字符串)中随机抽样N个数,返回一个新的列表 In [27]: random.sample(xrange(1,100), 3) Out[27]: [94, 91, 53] In ...randint 函数,在指定的整数范围内(1返回一个数 In [29]: random.randint(1,20) Out[29]: 18 7 uuid模块 python自带 import...,不匹配则放回None 2 match只匹配字符串的开始,如果开始不符合正则表达式,就返回None,而search匹配整个字符串,匹配到了则算匹配成功 12 collections 模块OrderedDict...python再带内建(python 2.7 以上版本才有Counter函数) Counter函数是属于字典的子类,所有也拥有字典相关的特性 重要用途: 返回列表(字符串)中元素出现的次数 In [11...,大的文本,可以缓存到内存,下次再次读取直接从内存中拿取 用法: 返回所有行,以列表的形式 l_lines = linecache.getlines('filename') 返回指定的一行,返回字符串形式
其实操作系统提供的命令只是简单地调用了操作系统提供的接口函数,Python 内置的 os模块也可以直接调用操作系统提供的接口函数。...所指向的文件或者目录的最后存取时间 os.path.getmtime(path) 返回 path 所指向的文件或者目录的最后修改时间 os.path.getsize(filename) 返回文件包含的字符数量...subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None,...stdout 获取子进程的 stdout。通常为 bytes 类型序列,None 表示没有捕获值。...如果你在调用run()方法时,设置了参数 stderr=subprocess.STDOUT,则错误信息会和 stdout 一起输出,此时 stderr 的值是 None。
该模块的input()函数有点类似文件readlines()方法,区别在于: 前者是一个迭代对象,即每次只生成一行,需要用for循环迭代。 后者是一次性读取所有行。...#返回当前已经读取的行的数量(或者序号) fileinput.filelineno() #返回当前读取的行的行号 fileinput.isfirstline() #检查当前行是否是文件的第一行 fileinput.isstdin...() #判断最后一行是否从stdin中读取 fileinput.close() #关闭队列 【常见例子】 例子01: 利用fileinput读取一个文件所有行 >>> import...’,’Perl’) #或者print line.replace(‘Python’,’Perl’), #最后结果: #data.txt Python Java C/C++ Shell #并生成: #data.txt.bak...\info.txt’): sys.stdout.write(‘=> ‘) sys.stdout.write(line) #输出结果 >>> => The Zen of Python, by Tim Peters
作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 ...本章将会讲解Python编程中的 print()输出函数 ---- 一.输入与输出 1.print()输出函数 print()方法用于打印输出,最常见的一个函数。...语法: print(self, *args, sep=' ' , end='\n' , file=None) 例: 这个很好理解,现在咱们使用Ctrl+鼠标左键——>放在函数位置——>进入print...总结: 常用参数 sep:分隔符符号,在值之间插入的字符串,默认为空格 end:字符串追加在最后一个值之后,默认为换行符\n。...如果,设置end='' ,则可以不换行,让print在一行内连续打印 ---- 创作不易,求关注,点赞,收藏,谢谢~
这里我参考了官方文档的例子,做了一些整改,写了一个python调用ansible的函数,执行过程中输出执行结果。...函数返回执行结果,便于筛选和存储所需的数据: # vim exec_ansible.py from ansible.inventory.manager import InventoryManager from...-----bug解决---- 另外,我在脚本中新增了全局空字典参数exec_result={},分别在class ResultCallback和函数exec_result中进行全局函数声明,用以存储执行过程中所产生的...stdout输出,以解决之前脚本的bug(返回函数中,存储内容的只剩下最后执行命令的那台主机的相关信息,做不到把所有的主机的执行信息存储)。 ...只需在python主体重定义exec_result = {}这个空字典,即可实现。
2.我们可以使用内置函数compile将其编译为代码对象。然后,在代码对象上用exec运行它。...,因为在函数实际运行之前不会给它。...builtins__': , 'value': 5, 'double': } 看看最后一行...:不仅value存储在localtic字典中,函数double本身也存储在那里!...input 和 print:面包和黄油 input和print可能是您最早知道的Python的两个函数。它们看起来很直接,不是吗? input输入一行文本,然后print将其打印出来,就这么简单。
在Python中,装饰器一般用来修饰函数,实现公共功能,达到代码复用的目的。在函数定义前加上@xxxx,然后函数就注入了某些行为,很神奇!然而,这只是语法糖而已。...(被代理函数)作为参数,返回一个代理函数。...调用代理函数时,先输出日志,然后调用被代理函数,调用完成后再输出日志,最后返回调用结果。这样,不就达到通用化的目的了吗?——对于任意被代理函数func,log_call均可轻松应对。...采用默认阈值,函数调用还是不能省略: @log_slow_call() def sleep_seconds(seconds): time.sleep(seconds) 处女座可能会对第一行这对括号感到不爽...: time.sleep(seconds) 当然了,函数调用尽量使用关键字参数是一种极佳实践,含义清晰,在参数很多的情况下更是如此。
一、python中执行cmd 目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码...Popen原型是: subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None...Popen.stdout 如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回 None。...Popen.stderr 如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回 None。...不管参数是一个路径还是文件 os.system() 函数用来运行shell命令 3.os进程 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果
领取专属 10元无门槛券
手把手带您无忧上云