python数学函数模块,python中调用什么模块的什么函数

  python数学函数模块,python中调用什么模块的什么函数

  本文主要介绍python函数和模块的使用细节,主题的具体介绍基于Python的相关资料,有一定的参考价值,有需要的朋友可以参考一下。

  00-1010一、定义函数二。参数三。管理职能四。带有模块的变量范围

  

目录

  在Python中,可以使用def关键字定义函数,命名规则与变量一致。传递给函数的参数可以放在函数名后面的括号里,我们可以在函数执行后通过return关键字返回值。

  定义代码如下:

  定义fac(编号):

  查找阶乘

  结果=1

  对于范围(1,编号1):中的n

  结果*=n

  #返回值

  回送结果

  

一、定义函数

  在Python中,函数的参数可以有默认值,也支持变量参数,所以Python不需要像其他语言一样支持函数的重载,因为当我们定义一个函数时,可以让它有很多不同的使用方式。

  下面是两个小例子:

  从随机导入randint

  定义掷骰子(n=2):

  摇骰子

  总计=0

  for _ in范围(n):

  total=randint(1,6)

  退货总额

  def add(a=0,b=0,c=0):

  三个数相加

  返回一个2 * b 3 * c

  #如果没有指定参数,用默认值摇两个骰子。

  print(roll_dice())

  #摇三个骰子

  print(roll_dice(3))

  #函数重载。当没有指定函数变量时,参数按顺序传递。

  print(add())

  打印(添加(1))

  打印(添加(1,2))

  打印(添加(1,2,3))

  #参数可以不按设定顺序传递。

  打印(add(c=50,a=100,b=200))

  #或者你可以把它传递下去。

  打印(添加(c=50,b=200))

  if __name__==__main__:

  及格

  没有传入对应参数的值时将使用该参数的默认值。

  当参数的数量不确定时,我们可以使用可变参数,代码如下所示:.

  #参数名前面的*表示args是可变参数。

  定义添加(*args):

  总计=0

  对于args:中的val

  总计=价值

  退货总额

  调用add函数时,可以传入# 0个或更多参数。

  print(add())

  打印(添加(1))

  打印(添加(1,2))

  打印(添加(1,2,3))

  打印(添加(1,3,5,7,9))

  

二、函数的参数

  因为Python没有函数重载的概念,后面定义的函数会覆盖前面的定义,也就是说两个同名的函数实际上只存在一个。

  def foo():

  打印(“你好,世界!”)

  def foo():

  打印(“再见,世界!”)

  #下面的代码会输出什么?

  foo()

  if __name__==__main__:

  及格

  #实际产量

  再见,世界!

  多人协作团队开发时,团队中可能有很多程序员都定义了名为foo的函数,那么如何解决这种命名冲突呢?

  重点如何避免函数覆盖!!!

  在Python中,每个。py文件代表一个模块。我们可以在不同的模块中使用相同名称的函数。在使用函数的时候,我们可以通过import关键字导入指定的模块,来区分我们要使用哪个模块的foo函数。

  代码如下所示:

   class="brush:py;">module1.py

  def foo():

      print(hello, world!)

  module2.py

  def foo():

      print(goodbye, world!)

  导入模块:

  

test.py

  import module1 as m1

  import module2 as m2

  m1.foo()

  m2.foo()

  

注意:但是如果将代码写成了下面的样子,那么程序中调用的是最后导入的那个foo,因为后导入的foo覆盖了之前导入的foo。

  

  

from module1 import foo

  from module2 import foo

  # 输出goodbye, world!,使用的是后导入的模块

  foo()

  需要说明的是,如果我们导入的模块除了定义函数之外还有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码,事实上我们不想执行这些代码,那我们将可执行代码放入如下所示的条件中,这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是"__main__"

  

def foo():

      pass

  def bar():

      pass

  # __name__是Python中一个隐含的变量它代表了模块的名字

  # 只有被Python解释器直接执行的模块的名字才是__main__

  if __name__ == __main__:

      print(call foo())

      foo()

      print(call bar())

      bar()

  

import module3

  # 导入module3时 不会执行模块中if条件成立时的代码 因为模块的名字是module3而不是__main__

  

  

四、变量的作用域

  

def foo():

      b = hello

      # Python中可以在函数内部再定义函数

      def bar():

          c = True

          print(a)

          print(b)

          print(c)

      bar()

      # print(c)  # NameError: name c is not defined

  if __name__ == __main__:

      a = 100

      # print(b)  # NameError: name b is not defined

      foo()

  打印结果:

  

100
hello
True

  

  上面的代码能够顺利的执行并且打印出100、hello和True,但我们注意到了,在bar函数的内部并没有定义a和b两个变量,那么a和b是从哪里来的。

  我们在上面代码的if分支中定义了一个变量a,这是一个全局变量(global variable),属于全局作用域,因为它没有定义在任何一个函数中。

  在上面的foo函数中我们定义了变量b,这是一个定义在函数中的局部变量(local variable),属于局部作用域,在foo函数的外部并不能访问到它;但对于foo函数内部的bar函数来说,变量b属于嵌套作用域,在bar函数中我们是可以访问到它的。

  bar函数中的变量c属于局部作用域,在bar函数之外是无法访问的。

  Python查找变量顺序:

  局部作用域-》嵌套作用域-》全局作用域和内置作用域的顺序进行搜索。

  内置作用域:Python内置的那些标识符,我们之前用过的input、print、int等都属于内置作用域。

  我们希望通过函数调用修改全局变量a的值,但实际上下面的代码是做不到的。

  代码如下:

  

def foo():

      a = 200

      print(a)  # 200

  if __name__ == __main__:

      #这里变量值不能修改函数局部变量的值

      a = 100

      foo()

      print(a)  # 100

  在调用foo函数后,我们发现a的值仍然是100,这是因为当我们在函数foo中写a = 200的时候,是重新定义了一个名字为a的局部变量,它跟全局作用域的a并不是同一个变量。

  因为局部作用域中有了自己的变量a,因此foo函数不再搜索全局作用域中的a。如果我们希望在foo函数中修改全局作用域中的a,

  代码如下所示:

  

def foo():

      global a

      a = 200

      print(a)  # 200

  if __name__ == __main__:

      a = 100

      foo()

      print(a)  # 200

  可以使用global关键字来指示foo函数中的变量a来自于全局作用域。

  

注:

  

  

在实际开发中,我们应该尽量减少对全局变量的使用,因为全局变量的作用域和影响过于广泛,可能会发生意料之外的修改和使用。

  

  除此之外全局变量比局部变量拥有更长的生命周期,可能导致对象占用的内存长时间无法被垃圾回收

  到此这篇关于Python函数和模块的使用详情的文章就介绍到这了,更多相关Python函数模块内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: