当前位置:首页 » 编程语言 » python主函数怎么写

python主函数怎么写

发布时间: 2023-05-10 09:41:15

A. 在python中定义Main函数

目录

许多编程语言都有一个特殊的函数,当操作系统开始运行程序时会自动执行该函数。这个函数通常被命名为main(),并且依据语言标准具有特定的返回类型和参数。另一方面,Python解释器从文件顶部开始执行脚本,并且没有自动执行的特殊函数。

尽管如此,为程序的执行定义一个起始点有助于理解程序是如何运行的。Python程序员提出了几种方式对此进行实现。

本文结束时,您将了解以下内容:

Python中的基本main()函数

一些Python脚本中,包含一个函数定义和一个条件语句,如下所示:

此代码中,包含一个main()函数,在程序执行时打印Hello World!。此外,还包含一个条件(或if)语句,用于检查__name__的值并将其与字符串"__main__"进行比较。当if语句为True时,Python解释器将执行main()函数。更多关于Python条件语句的信息可以由此获得。

这种代码模式在Python文件中非常常见,它将作为脚本执行并导入另一个模块。为了帮助理解这段代码的执行方式,首先需要了解Python解释器如何根据代码的执行方式设置__name__。

Python中的执行模式

Python解释器执行代码有两种方式:

更多内容可参考如何运行Python脚本。无论采用哪种方式,Python都会定义一个名为__name__的特殊变量,该变量包含一个字符串,其值取决于代码的使用方式。

本文将如下示例文件保存为execution_methods.py,以 探索 代码如何根据上下文改变行为:

在此文件中,定义了三个对print()函数的调用。前两个打印一些介绍性短语。第三个print()会先打印短语The value __name__ is,之后将使用Python内置的repr()函数打印出__name__变量。

在Python中,repr()函数将对象转化为供解释器读取的形式。上述示例通过使用repr()函数来强调__name__的值为字符串。更多关于repr()的内容可参考Python文档。

在本文中,您将随处可见文件(file),模块(mole)和脚本(script)这三个字眼。实际上,三者之间并无太大的差别。不过,在强调代码目的时,还是存在细微的差异:

“如何运行Python脚本”一文也讨论了三者的差别。

基于命令行执行

在这类方法中,Python脚本将通过命令行来执行。

执行脚本时,无法与Python解释器正在执行的代码交互。关于如何通过命令行执行代码的详细信息对本文而言并不重要,但您可以通过展开下框阅读更多有关Windows,Linux和macOS之间命令行差异的内容。

命令行环境

不同的操作系统在使用命令行执行代码时存在细微的差异。

在Linux和macOS中,通常使用如下命令:

美元符号($)之前的内容可能有所不同,具体取决于您的用户名和计算机名称。您键入的命令位于$之后。在Linux或macOS上,Python3的可执行文件名为python3,因此可以通过输入python3 script_name.py来运行python脚本。

在Windows上,命令提示符通常如下所示:

根据您的用户名,>之前的内容可能会有所不同,您输入的命令位于>之后。在Windows上,Python3的可执行文件通常为python。因此可以通过输入python script_name.py来运行python脚本。

无论哪种操作系统,本文的Python脚本的输出结果都是相同的。因此本文以Linux和macOS为例。

使用命令行执行execution_methods.py,如下所示:

在这个示例中,__name__具有值'__main__',其中引号(')表明该值为字符串类型。

请记住,在Python中,使用单引号(')和双引号(")定义的字符串没有区别。更多关于字符串的内容请参考Python的基本数据类型。

如果在脚本中包含"shebang行"并直接执行它(./execution_methods.py),或者使用IPython或Jupyter Notebook的%run,将会获取相同的结果。

您还可以通过向命令行添加-m参数的方法实现以模块的方式执行。通常情况下,推荐如下方式pip: python3 -m pip install package_name。

添加-m参数将会运行包中__main__.py的代码。更多关于__main__.py文件的内容可参考如何将开源Python包发布到PyPI中。

在三种情况中,__name__都具有相同的值:字符串'__main__'。

技术细节:Python文档中具体定义了__name__何时取值为'__main__'。

当通过标准输入,脚本或者交互提示中读取数据时,模块的__name__将取值为'__main__'。(来源)

__name__与__doc__,__package__和其他属性一起存储在模块的全局命名空间。更多关于属性的信息可参考Python数据模型文档,特别是关于模块和包的信息,请参阅Python Import文档。

导入模块或解释器

接下来是Python解释器执行代码的第二种方式:导入。在开发模块或脚本时,可以使用import关键字导入他人已经构建的模块。

在导入过程中,Python执行指定模块中定义的语句(但仅在第一次导入模块时)。要演示导入execution_methods.py文件的结果,需要启动Python解释器,然后导入execution_methods.py文件:

在此代码输出中,Python解释器执行了三次print()函数调用。前两行由于没有变量,在输出方面与在命令行上作为脚本执行时完全相同。但是第三个输出存在差异。

当Python解释器导入代码时,__name__的值与要导入的模块的名称相同。您可以通过第三行的输出了解这一点。__name__的值为'execution_methods',是Python导入的.py文件。

注意如果您在没有退出Python时再次导入模块,将不会有输出。

注意:更多关于导入在Python中如何工作的内容请参考官方文档和Python中的绝对和相对导入。

Main函数的最佳实践

既然您已经了解两种执行方式上的差异,那么掌握一些最佳实践方案还是很有用的。它们将适用于编写作为脚本运行的代码或者在另一个模块导入的代码。

如下是四种实践方式:

将大部分代码放入函数或类中

请记住,Python解释器在导入模块时会执行模块中的所有代码。有时如果想要实现用户可控的代码,会导致一些副作用,例如:

在这种情况下,想要实现用户控制触发此代码的执行,而不是让Python解释器在导入模块时执行代码。

因此,最佳方法是将大部分代码包含在函数或类中。这是因为当Python解释器遇到def或class关键字时,它只存储这些定义供以后使用,并且在用户通知之前不会实际执行。

将如下代码保存在best_practices.py以证明这个想法:

在此代码中,首先从time模块中导入sleep()。

在这个示例中,参数以秒的形式传入sleep()函数中,解释器将暂停一段时间再运行。随后,使用print()函数打印关于代码描述的语句。

之后,定义一个process_data()函数,执行如下五项操作:

在命令行中执行

当你将此文件作为脚本用命令行执行时会发生什么呢?

Python解释器将执行函数定义之外的from time import sleep和print(),之后将创建函数process_data()。然后,脚本将退出而不做任何进一步的操作,因为脚本没有任何执行process_data()的代码。

如下是这段脚本的执行结果:

我们在这里看到的输出是第一个print()的结果。注意,从time导入和定义process_data()函数不产生结果。具体来说,调用定义在process_data()内部的print()不会打印结果。

导入模块或解释器执行

在会话(或其他模块)中导入此文件时,Python解释器将执行相同的步骤。

Python解释器导入文件后,您可以使用已导入模块中定义的任何变量,类或函数。为了证明这一点,我们将使用可交互的Python解释器。启动解释器,然后键入import best_practices:

导入best_practices.py后唯一的输出来自process_data()函数外定义的print()。导入模块或解释器执行与基于命令行执行类似。

使用__name__控制代码的执行

如何实现基于命令行而不使用Python解释器导入文件来执行呢?

您可以使用__name__来决定执行上下文,并且当__name__等于"__main__"时才执行process_data()。在best_practices.py文件中添加如下代码:

这段代码添加了一个条件语句来检验__name__的值。当值为"__main__"时,条件为True。记住当__name__变量的特殊值为"__main__"时意味着Python解释器会执行脚本而不是将其导入。

条件语块内添加了四行代码(第12,13,14和15行):

现在,在命令行中运行best_practices.py,并观察输出的变化:

首先,输出显示了process_data()函数外的print()的调用结果。

之后,data的值被打印。因为当Python解释器将文件作为脚本执行时,变量__name__具有值"__main__",因此条件语句被计算为True。

接下来,脚本将调用process_data()并传入data进行修改。当process_data执行时,将输出一些状态信息。最终,将输出modified_data的值。

现在您可以验证从解释器(或其他模块)导入best_practices.py后发生的事情了。如下示例演示了这种情况:

注意,当前结果与将条件语句添加到文件末尾之前相同。因为此时__name__变量的值为"best_practices",因此条件语句结果为False,Python将不执行process_data()。

创建名为main()的函数来包含要运行的代码

现在,您可以编写作为脚本由从命令行执行并导入且没有副作用的Python代码。接下来,您将学习如何编写代码并使其他程序员能轻松地理解其含义。

许多语言,如C,C++,Java以及其他的一些语言,都会定义一个叫做main()的函数,当编译程序时,操作系统会自动调用该函数。此函数通常被称为入口点(entry point),因为它是程序进入执行的起始位置。

相比之下,Python没有一个特殊的函数作为脚本的入口点。实际上在Python中可以将入口点定义成任何名称。

尽管Python不要求将函数命名为main(),但是最佳的做法是将入口点函数命名为main()。这样方便其他程序员定位程序的起点。

此外,main()函数应该包含Python解释器执行文件时要运行的任何代码。这比将代码放入条件语块中更好,因为用户可以在导入模块时重复使用main()函数。

修改best_practices.py文件如下所示:

在这个示例中,定义了一个main()函数,它包含了上面的条件语句块。之后修改条件语块执行main()。如果您将此代码作为脚本运行或导入,将获得与上一节相同的输出。

在main()中调用其他函数

另一种常见的实现方式是在main()中调用其他函数,而不是直接将代码写入main()。这样做的好处在于可以实现将几个独立运行的子任务整合。

例如,某个脚本有如下功能:

如果在单独的函数中各自实现这些子任务,您(或其他用户)可以很容易地实现代码重用。之后您可以在main()函数中创建默认的工作流。

您可以根据自己的情况选择是否使用此方案。将任务拆分为多个函数会使重用更容易,但会增加他人理解代码的难度。

修改best_practices.py文件如下所示:

在此示例代码中,文件的前10行具有与之前相同的内容。第12行的第二个函数创建并返回一些示例数据,第17行的第三个函数模拟将修改后的数据写入数据库

第21行定义了main()函数。在此示例中,对main()做出修改,它将调用数据读取,数据处理以及数据写入等功能。

首先,从read_data_from_web()中创建data。将data作为参数传入process_data(),之后将返回modified_data。最后,将modified_data传入write_data_to_database()。

脚本的最后两行是条件语块用于验证__name__,并且如果if语句为True,则执行main()。

在命令行中运行如下所示:

根据执行结果,Python解释器在执行main()函数时,将依次执行read_data_from_web(),process_data()以及write_data_to_database()。当然,您也可以导入best_practices.py文件并重用process_data()作为不同的数据输入源,如下所示:

在此示例中,导入了best_practices并且将其简写为bp。

导入过程会导致Python解释器执行best_practices.py的全部代码,因此输出显示解释文件用途的信息。

然后,从文件中存储数据而不是从Web中读取数据。之后,可以重用best_practices.py文件中的process_data()和write_data_to_database()函数。在此情况下,可以利用代码重写来取代在main()函数中实现全部的代码逻辑。

实践总结

以下是Python中main()函数的四个关键最佳实践:

结论

恭喜!您现在已经了解如何创建Python main()函数了。

本文介绍了如下内容:

现在,您可以开始编写一些非常棒的关于Python main()函数代码啦!

B. Python基础入门-函数的定义与使用

通过关键字def来创建历碧函数,def的作用是实现python中函数的创建

函数定义过程:

函数名+()小括号执行函数

函数体内对全肢判举局变量只能读取,不冲歼能修改

局部变量,无法在函数体外使用

python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

C. python打印二叉树所有路径的主函数怎样写

基本算法就是二叉树的遍历,首先想到的是深度优先遍历。
难点在于,如何实现每个子路径的记录和append
binaryTreePaths函数只给了root变量,无法存储每个子路径,考虑写辅助函数res,添加存储路径的变量
res(root,temp)
同时还需要一个全局变量result存储最后的输出结果,result.append(temp)

D. python补充函数fun求出n!并将结果返回主函数

下面是 Python 中一个函数的示例,该函数计算给定数字的阶乘并蔽空返回结果:n

此代码将打印 5 的阶乘,即 120。

E. python怎么编写函数

在python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后在缩进块中编写函数体,函数的返回值用return语句返回
def 函数名([参数1,参数2,...,参数n]):
函数体
函数代码以def关键词开头,后接函数标识符名称和圆括号():
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数

函数的第一行语句可以选择性的使用文档字符串-用于存放函数说明

函数内容以冒号起始,并且缩进

return[表达式]结束函数,选择性的返回一个值给调用方,不带表达式的return相当于返回None

F. Python编写一个函数,求1*2*3*4...*n的乘积,编写主程序,从键盘输入一个整数,并

第二宏宽嫌个函数就是。用的蔽手巧厅是递归函数。

G. python写两个函数,分别求任意给定的两个整数的最大公约数和最小公倍数,用主函

# 辗转相仔卖除法求最大念模逗公约数
def gcd(a, b):
if a < b:
a, b = b, a
while a % b != 0:
a, b = b, a % b
return b
# 求最小公倍数
def lcm(a,b):
return a * b // gcd(a,b)

程码丛序缩进如图所示

H. python中的函数是什么

Python3 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。

  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

  • 函数内容以冒号:起始,并且缩进。

  • return [表达式]结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

  • 语法

    Python 定义函数使用 def 关键字,一般格式如下:

  • def 函数名(参数列表):

  • 函数体

  • 默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。

    实例

    让我们使用函数来输出"Hello World!":

    #!/usr/bin/python3

    defhello():
    print("Hello World!")

    hello()

    更复杂点的应用,函数中带上参数变量:

    实例(Python 3.0+)

    比较两个数,并返回较大的数:

    #!/usr/bin/python3
    def max(a, b): if a > b: return a
    else: return b
    a = 4b = 5print(max(a, b))

    以上实例输出结果:

  • 5

  • 实例(Python 3.0+)

    计算面积函数:

    #!/usr/bin/python3
    # 计算面积函数def area(width, height): return width * height
    def print_welcome(name): print("Welcome", name)
    print_welcome("Runoob")w = 4h = 5print("width =", w, " height =", h, " area =", area(w, h))

    以上实例输出结果:

  • Welcome Runoobwidth = 4 height = 5 area = 20

  • 函数调用

    定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。

    这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。

    如下实例调用了printme()函数:

    实例(Python 3.0+)

    #!/usr/bin/python3
    # 定义函数def printme( str ): # 打印任何传入的字符串
    print (str)
    return
    # 调用函数printme("我要调用用户自定义函数!")printme("再次调用同一函数")

    以上实例输出结果:

  • 我要调用用户自定义函数!再次调用同一函数

  • 参数传递

    在 python 中,类型属于对象,变量是没有类型的:

  • a=[1,2,3]a="Runoob"

  • 以上代码中,[1,2,3]是 List 类型,"Runoob"是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。

    可更改(mutable)与不可更改(immutable)对象

    在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

  • 不可变类型:变量赋值a=5后再赋值a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。

  • 可变类型:变量赋值la=[1,2,3,4]后再赋值la[2]=5则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

  • python 函数的参数传递:

  • 不可变类型:类似 C++ 的值传递,如 整数、字符串、元组。如 fun(a),传递的只是 a 的值,没有影响 a 对象本身。如果在 fun(a))内部修改 a 的值,则是新生成来一个 a。

  • 可变类型:类似 C++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会受影响

  • python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

    python 传不可变对象实例

    通过id()函数来查看内存地址变化:

    实例(Python 3.0+)

    def change(a): print(id(a)) # 指向的是同一个对象
    a=10
    print(id(a)) # 一个新对象
    a=1print(id(a))change(a)

    以上实例输出结果为:


  • 可以看见在调用函数前后,形参和实参指向的是同一个对象(对象 id 相同),在函数内部修改形参后,形参指向的是不同的 id。

    传可变对象实例

    可变对象在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。例如:

    实例(Python 3.0+)

    #!/usr/bin/python3
    # 可写函数说明def changeme( mylist ): "修改传入的列表"
    mylist.append([1,2,3,4])
    print ("函数内取值: ", mylist)
    return
    # 调用changeme函数mylist = [10,20,30]changeme( mylist )print ("函数外取值: ", mylist)

    传入函数的和在末尾添加新内容的对象用的是同一个引用。故输出结果如下:

  • 函数内取值: [10, 20, 30, [1, 2, 3, 4]]函数外取值: [10, 20, 30, [1, 2, 3, 4]]

  • 参数

    以下是调用函数时可使用的正式参数类型:

  • 必需参数

  • 关键字参数

  • 默认参数

  • 不定长参数

  • 必需参数

    必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

    调用 printme() 函数,你必须传入一个参数,不然会出现语法错误:

    实例(Python 3.0+)

    #!/usr/bin/python3
    #可写函数说明def printme( str ): "打印任何传入的字符串"
    print (str)
    return
    # 调用 printme 函数,不加参数会报错printme()

    以上实例输出结果:

  • Traceback (most recent call last):

  • File "test.py", line 10, in <mole>

  • printme()TypeError: printme() missing 1 required positional argument: 'str'

  • 关键字参数

    关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

    使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

    以下实例在函数 printme() 调用时使用参数名:

    实例(Python 3.0+)

    #!/usr/bin/python3
    #可写函数说明def printme( str ): "打印任何传入的字符串"
    print (str)
    return
    #调用printme函数printme( str = "菜鸟教程")

    以上实例输出结果:

  • 菜鸟教程

  • 以下实例中演示了函数参数的使用不需要使用指定顺序:

    实例(Python 3.0+)

    #!/usr/bin/python3
    #可写函数说明def printinfo( name, age ): "打印任何传入的字符串"
    print ("名字: ", name)
    print ("年龄: ", age)
    return
    #调用printinfo函数printinfo( age=50, name="runoob" )

    以上实例输出结果:

  • 名字: runoob年龄: 50

  • 默认参数

    调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:

    实例(Python 3.0+)

    #!/usr/bin/python3
    #可写函数说明def printinfo( name, age = 35 ): "打印任何传入的字符串"
    print ("名字: ", name)
    print ("年龄: ", age)
    return
    #调用printinfo函数printinfo( age=50, name="runoob" )print ("------------------------")printinfo( name="runoob" )

    以上实例输出结果:

  • 名字: runoob年龄: 50------------------------名字: runoob年龄: 35

  • 不定长参数

    你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:

  • def functionname([formal_args,] *var_args_tuple ):

  • "函数_文档字符串"

  • function_suite return [expression]

  • 加了星号*的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

    实例(Python 3.0+)

    #!/usr/bin/python3
    # 可写函数说明def printinfo( arg1, *vartuple ): "打印任何传入的参数"
    print ("输出: ")
    print (arg1)
    print (vartuple)
    # 调用printinfo 函数printinfo( 70, 60, 50 )

    以上实例输出结果:

  • 输出: 70(60, 50)

  • 如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。如下实例:
  • 实例(Python 3.0+)

    #!/usr/bin/python3
    # 可写函数说明def printinfo( arg1, *vartuple ): "打印任何传入的参数"
    print ("输出: ")
    print (arg1)
    for var in vartuple: print (var)
    return
    # 调用printinfo 函数printinfo( 10 )printinfo( 70, 60, 50 )

    以上实例输出结果:

  • 输出:10输出:706050

  • 还有一种就是参数带两个星号**基本语法如下:

  • def functionname([formal_args,] **var_args_dict ):

  • "函数_文档字符串"

  • function_suite return [expression]

  • 加了两个星号**的参数会以字典的形式导入。

    实例(Python 3.0+)

    #!/usr/bin/python3
    # 可写函数说明def printinfo( arg1, **vardict ): "打印任何传入的参数"
    print ("输出: ")
    print (arg1)
    print (vardict)
    # 调用printinfo 函数printinfo(1, a=2,b=3)

    以上实例输出结果:

  • 输出: 1{'a': 2, 'b': 3}

  • 声明函数时,参数中星号*可以单独出现,例如:

  • def f(a,b,*,c):

  • return a+b+c

  • 如果单独出现星号*后的参数必须用关键字传入。

  • >>> def f(a,b,*,c):... return a+b+c... >>> f(1,2,3) # 报错Traceback (most recent call last):

  • File "<stdin>", line 1, in <mole>TypeError: f() takes 2 positional arguments but 3 were given>>> f(1,2,c=3) # 正常6>>>

  • 匿名函数

    python 使用 lambda 来创建匿名函数。

    所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。

  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

  • 语法

    lambda 函数的语法只包含一个语句,如下:

  • lambda [arg1 [,arg2,.....argn]]:expression

  • 如下实例:

    实例(Python 3.0+)

    #!/usr/bin/python3
    # 可写函数说明sum = lambda arg1, arg2: arg1 + arg2
    # 调用sum函数print ("相加后的值为 : ", sum( 10, 20 ))print ("相加后的值为 : ", sum( 20, 20 ))

    以上实例输出结果:

  • 相加后的值为 : 30相加后的值为 : 40

  • return语句

    return [表达式]语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:

    实例(Python 3.0+)

    #!/usr/bin/python3
    # 可写函数说明def sum( arg1, arg2 ): # 返回2个参数的和."
    total = arg1 + arg2
    print ("函数内 : ", total)
    return total
    # 调用sum函数total = sum( 10, 20 )print ("函数外 : ", total)

    以上实例输出结果:

  • 函数内 : 30函数外 : 30

  • 强制位置参数

    Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。

  • 在以下的例子中,形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 或 f 要求为关键字形参:def f(a, b, /, c, d, *, e, f):

  • print(a, b, c, d, e, f)

  • 以下使用方法是正确的:

  • f(10, 20, 30, d=40, e=50, f=60)

  • 以下使用方法会发生错误:

  • f(10, b=20, c=30, d=40, e=50, f=60) # b 不能使用关键字参数的形式f(10, 20, 30, 40, 50, f=60) # e 必须使用关键字参数的形式

I. python编程统计列表中各数据的方差和标准差请编写主函数和计算方差的函数var。(不能引用库里)

def fangcha(): a=float(raw_input("请输入a:")) b=float(raw_input("请输入b:")) c=float(raw_input("请输入C:")) d=(a+b+c)/3.0 e=((a-d)**2+(b-d)**2+(c-d)**2)/3.0 print "平均数是:%f方差是:%f" %(d,e) fangcha() Python2.7可用

热点内容
数据库的根本目标 发布:2025-07-18 21:37:50 浏览:937
压缩机的流速 发布:2025-07-18 21:37:40 浏览:406
三星怎么取消手机密码 发布:2025-07-18 21:33:50 浏览:629
安卓手机耳机如何弹窗显示电量 发布:2025-07-18 21:20:53 浏览:59
云服务器搭建需要什么工具 发布:2025-07-18 20:51:08 浏览:322
如何提高手机缓存速度 发布:2025-07-18 20:24:48 浏览:237
vba读取数据库数据 发布:2025-07-18 20:24:48 浏览:608
shell解压zip 发布:2025-07-18 20:20:36 浏览:861
安卓泰拉瑞亚去哪里买 发布:2025-07-18 20:01:05 浏览:694
flash编译器 发布:2025-07-18 19:49:38 浏览:487