python语言的函数库采用什么语言编写,请用python语言编写一个函数

  python语言的函数库采用什么语言编写,请用python语言编写一个函数

  七。Python中的函数编程(第一部分)

  -从一个高中生的角度来学习Python

  关键词:

  Python高中生学编程MIT公开课视频Python函数编程递归递归函数递归调用

  1.为什么要引入函数?

  -

  在学习初期,我们写的程序都比较简单,功能单一,代码少。让我们考虑一下。如果要处理的应用程序变得越来越复杂,我们是否一直在一个地方编写代码?这样下去,会有什么结果?

  你可以考虑一下。如果一部小说不分章节甚至段落,读起来会是什么感觉?

  其实我们在编写代码的时候,一方面需要实现代码的功能,另一方面需要有良好的可读性,便于维护、修改和他人使用。因此,随着功能变得复杂,我们将对应用程序进行划分、简化和模块化。就像买回来的拼装玩具,功能就是这些玩具的部件。

  在我们研究的初期,我们都使用印刷品。打印其实是一个功能,但是是系统提供的功能。任何人在任何时候都可以使用它来实现它的功能。

  下面的视频来自麻省理工的公开课视频,详细介绍了编程中为什么需要引入函数。

  [在此插入视频]

  为什么需要介绍函数的视频?

  函数的实际应用说明

  二、函数的定义

  -

  1.函数的定义

  先说一个例子,是一个可以计算任意大小的斐波那契数列的函数:

  一个

  2

  三

  四

  五

  六

  def fib(n):#向上写斐波纳契数列ton

   打印一个斐波纳契数列最多吨。

  a,b=0,1

  而一个

  普林塔,

  a,b=b,a b

  在详细介绍函数的定义之前,我们先来看看这段代码:

  1:定义函数

  第2行:记住,这是一行有三个引号的注释(单引号效果)

  3.第三行:很奇怪。它实际上是一个赋值语句。当需要给多个变量赋值时,可以这样写。看起来很简洁。根据等号前面的变量顺序,将下面的值逐一赋给变量。在这里,所有变量都被赋予整数,但实际上,任何类型都可以使用,比如:

  aa,bb,cc,dd=1,2.3,1.3e2,"字符串"

  第4行:在循环语句的同时,注意写这样的语句,不要忘记“:”

  第5行:我们应该对这句话很熟悉,但要注意A后面的“,”号;这意味着在打印变量A之后,没有换行。因为是循环,所以下次执行这个print语句时,print的内容会跟随上一次打印,不换行;但是,如果没有“,”的话,那么每次执行打印时,都会自动换行。

  第6行:在第3行,我们介绍了这是一种赋值的写法,这句话更进一步。作业的内容是多个表达式。

  还是那句话,注意缩进。在这个例子中有两层缩进。

  函数的定义:

  元素1:关键字def

  元素二:函数名的规则和变量名的规则类似,但一般好的编程风格是将函数名和它们实现的功能套现。

  元素3:函数名后面有一对()。

  四个元素: ()可以包含一个或多个参数,当然也可以没有参数。

  五行:“:”

  元素6:函数体必须缩进。

  2.函数调用

  函数定义后,只有我们调用它,函数才能被执行。实际上,当我们使用print语句时,我们是在“调用打印函数”。

  那么怎么称呼我们上面举的例子呢?

  .#现在调用我们刚刚定义的函数:

  .国际纤维协会(2000年)

  0 1 1 2 3 5 8 13 21 34 55 89144 233 377 610 987 1597

  Fib(2000)是调用,下面一行,是这个函数的执行结果,显示2000以下的斐波那契数列;因为我们在printa后面加了“,”所以数列是一行显示的,否则这些数字会一个一个垂直显示。

  3.关于函数的参数

  函数的参数对于我们这些初学者来说比较费解(个人感觉)。事实上,它们类似于我们数学中的函数,比如:

  y=f(x)

  y=f(x1,y1)

  y=f(x1,x2,…,xn)

  所以,我们可以这样理解:

  函数的参数相当于我们数学中函数的自变量。

  函数可以没有参数,也可以有一个或多个参数。

  还有另一种特殊情况:

  回想印刷的使用,我们可以:

  打印一份

  您还可以:

  打印a、b、c、d、e

  也就是说,参数的数量是可变的。

  以上只是简单的概念性介绍。python在函数参数方面还有许多其他特性:

  1)默认参数(default argumentvalues)

  一个

  2

  三

  四

  五

  六

  deffib(n=2000):# writeFibonacci数列直到n

   打印一个斐波纳契数列最多吨。

  a,b=0,1

  而一个

  普林塔,

  a,b=b,a b

  这个定义好的函数在我们调用的时候可以直接使用。

  纤维()

  0 1 1 2 3 5 8 13 21 34 55 89144 233 377 610 987 1597

  但是,如果它不是默认的参数定义,像这样调用系统将会给出一个错误:

  纤维()

  回溯(最近一次呼叫):

  文件“”中的第1行

  TypeError: fib()正好接受1个参数(给定0个)

  2)关键字参数(关键字参数)

  参数是为函数调用设计的语法规则;

  对于功能:

  function_ex(arg1,arg2="arg2 ",arg3)

  Pass#关键字,用于占位符

  我们可以用下面的方法来调用(我们假设参数的类型是string):

  function_ex("arg1 ")

  function_ex(arg1="arg111 "," arg333 ")

  function_ex("arg111 ",arg3="arg333 ")

  function_ex(arg3="arg333 ",arg1="arg111 ",arg2="arg222 ")

  关键字参数可以不按照参数表的实际顺序,但要尽量按顺序写,否则容易出错。

  4.函数的返回值

  或者拿我们数学的功能来说明:

  对于功能:

  y=f(x)

  y=f(x1,y1)

  y=f(x1,x2,…,xn)

  如果我们给定了自变量值,一定有对应的Y值。我们同样可以认为Y是函数的返回值。

  稍微修改一下上面的fib函数:

  一个

  2

  三

  四

  五

  六

  七

  八

  def fib2(n): # returnFibonacci数列直到n

  返回一个包含第n个斐波那契数列的列表,

  结果=[]

  a,b=0,1

  而一个

  result.append(a)#见下文

  a,b=b,a b

  回送结果

  这些修改是:

  第1行:我们再次将其重命名,现在函数名为fib2。

  3:增加了一个新的变量结果。记住,[]表示列表类型,我们将结果初始化为一个空列表。这句话达到了两个目的:一是隐式地表明结果是一个列表类型的变量,二是初始化变量。

  第6行:这个句子很难理解。列表类型在之前的博客中已经介绍过了。它包含了很多“方法”来实现各种功能,比如append来添加一个元素到列表中,pop来弹出列表的最后一个元素等等。注意这通电话的写法。Result.append(a)等效于result=result [a]

  第7行:返回结果

  对于返回值,强调以下内容也很重要:

  要素1:

  函数可以没有return语句,但是没有return时,返回值为None,也是保留关键字;

  纤维(0)

  printfib(0)

  没有人

  两个要素:

  return语句可以没有值,在这种情况下,它也不返回任何值。

  三个要素:

  正常情况,返回值

  下面是视频讲解。

  插入视频

  三。变量的范围

  -

  我们将在程序中定义许多变量。引入函数后,变量的作用域(或变量的可用范围)需要仔细考虑。

  函数外定义的变量可以在函数中使用吗?

  函数中定义的变量可以在函数体外部使用吗?

  这些是我们在本节中讨论的问题。

  1.局部变量

  简单来说,函数体内定义的变量的作用域被限制在函数体内,如果在函数体外使用,就会报错。

  def func_test01():

  .a1=10

  .打印a1

  .

  函数_测试01()

  10

  打印a1

  回溯(最近一次呼叫):

  文件“”中的第1行

  名称错误:未定义名称“a1”

  2.全局变量

  比如上面,恰恰相反,是一个全局变量。请参见以下示例:

  a1=1

  def测试函数():

  .打印a1

  .打印a2

  .

  a2=2

  test_func()

  一个

  2

  即使a2是在函数后面定义的,也可以在函数中使用。

  3.强制它成为全局变量。

  如果在函数体中声明了与全局变量同名的变量,此时,全局变量将被覆盖,就像声明了同名的局部变量一样。

  一个

  2

  三

  四

  五

  六

  七

  八

  九

  def foo():

  打印 \ n调用foo().

  bar=200

  打印 in foo(),bar is ,bar

  bar=100

  打印在__main__,bar is ,bar

  foo()

  打印 \ nin _ _ main _ _,bar is(still),bar

  输出结果如下:

  在__main__中,bar是100

  调用foo().

  在foo()中,bar是200

  在__main__中,bar是(仍然)100

  如何解决这个问题?这需要使用global强制变量成为全局变量,并进行以下更改:

  一个

  2

  三

  四

  五

  六

  七

  八

  九

  10

  def foo():

  全球酒吧

  打印 \ n调用foo().

  bar=200

  打印 in foo(),bar is ,bar

  bar=100

  打印在__main__,bar is ,bar

  foo()

  打印 \ nin _ _ main _ _,bar is(still),bar

  输出结果如下:

  在__main__中,bar是100

  调用foo().

  在foo()中,bar是200

  在__main__,bar是(仍然)200

  这样,函数被调用后,bar的值就改变了。

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

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