首頁 後端開發 Python教學 详解Python中的各种函数的使用

详解Python中的各种函数的使用

Jun 06, 2016 am 11:17 AM
python

 函数是有组织的,可重复使用的代码,用于执行一个单一的,相关的动作的块。函数为应用程序和代码重用的高度提供了更好的模块。

正如我们知道的,Python的print()等许多内置函数,但也可以创建自己的函数。这些函数称为用户定义函数。
定义一个函数

可以定义函数,以提供所需的功能。下面是简单的规则来定义Python函数。

  •     函数块以开始关键字def后跟函数名和括号中(())。
  •     任何输入参数或参数应该放在这些括号内。还可以定义这些括号内的参数。
  •     函数的第一个语句可以是??一个可选的声明 - 该函数或文档字符串的文档字符串。
  •     每个函数中的代码块以冒号(:)开头并缩进。
  •     该语句返回[表达式]退出功能,可选地传递回一个表达式给调用者。不带参数return语句返回None。

语法:

def functionname( parameters ):
  "function_docstring"
  function_suite
  return [expression]

登入後複製

默认情况下,参数具有一个位置的行为和需要,它们被定义为通知他们以相同的顺序。
例子:

这是最简单的Python函数形式。这个函数接受一个字符串作为输入参数,并打印标准的屏幕上。

def printme( str ):
  "This prints a passed string into this function"
  print str
  return

登入後複製

调用函数

定义一个函数只给出它的名称,指定要被包括在功能和结构的代码块的参数。

一旦函数的基本结构确定后,可以通过从其他函数或直接从Python提示符调用它执行它。以下是示例调用printme()函数:

#!/usr/bin/python

# Function definition is here
def printme( str ):
  "This prints a passed string into this function"
  print str;
  return;

# Now you can call printme function
printme("I'm first call to user defined function!");
printme("Again second call to the same function");

登入後複製

当执行上面的代码中,产生以下结果:

I'm first call to user defined function!
Again second call to the same function

登入後複製

引用VS值传递

所有参数(参数)在Python语言是通过引用传递。这意味着,如果你在一个函数中改变了一个参数的值,变化也反映了在调用函数中。例如:

#!/usr/bin/python

# Function definition is here
def changeme( mylist ):
  "This changes a passed list into this function"
  mylist.append([1,2,3,4]);
  print "Values inside the function: ", mylist
  return

# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist

登入後複製

这里,我们保持传递的对象的参考,并在同一个对象附加的值。这样,这将产生以下结果:

Values inside the function: [10, 20, 30, [1, 2, 3, 4]]
Values outside the function: [10, 20, 30, [1, 2, 3, 4]]

登入後複製

还有就是参数通过引用传递和引用被覆盖在被调用的函数里面一个例子。

#!/usr/bin/python

# Function definition is here
def changeme( mylist ):
  "This changes a passed list into this function"
  mylist = [1,2,3,4]; # This would assig new reference in mylist
  print "Values inside the function: ", mylist
  return

# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist

登入後複製

参数myList上局部函数changeme。更改函数内mylist不影响mylist。函数没有作用,最后这会产生以下结果:

Values inside the function: [1, 2, 3, 4]
Values outside the function: [10, 20, 30]

登入後複製

函数参数:

可以通过使用形参的类型如下调用函数:

  • 必需的参数
  • 关键字参数
  • 默认参数
  • 可变长度参数

必需的参数:

所需的参数为传递给正确的位置顺序的函数的参数。这里,在函数调用的参数的数目应与函数定义完全匹配。

调用函数printme(),一定要传递一个参数,否则会如下给出一个语法错误:

#!/usr/bin/python

# Function definition is here
def printme( str ):
  "This prints a passed string into this function"
  print str;
  return;

# Now you can call printme function
printme();

登入後複製

当执行上面的代码,产生以下结果:

Traceback (most recent call last):
 File "test.py", line 11, in <module>
  printme();
TypeError: printme() takes exactly 1 argument (0 given)

登入後複製

关键字参数:

关键字参数是关系到函数调用。当在一个函数调用中使用关键字参数,调用者通过参数名称标识的参数。

这可以跳过参数或脱离顺序,因为Python解释器能够使用提供的参数使用匹配的值的关键字。还可以使关键字调用在以下方面printme()函数:

#!/usr/bin/python

# Function definition is here
def printme( str ):
  "This prints a passed string into this function"
  print str;
  return;

# Now you can call printme function
printme( str = "My string");

登入後複製

当执行上面的代码中,产生以下结果:

My string

登入後複製

下面的例子给出了更清晰的画面。请注意,这里跟参数秩序没有关系。

#!/usr/bin/python

# Function definition is here
def printinfo( name, age ):
  "This prints a passed info into this function"
  print "Name: ", name;
  print "Age ", age;
  return;

# Now you can call printinfo function
printinfo( age=50, name="miki" );

登入後複製

当执行上面的代码,产生以下结果:

Name: miki
Age 50

登入後複製

默认参数:

默认参数是,假设一个默认值,如果不提供的函数调用的参数值的参数。下面的例子给出了默认参数一个主意,它会默认打印age,如果不通过传值:

#!/usr/bin/python

# Function definition is here
def printinfo( name, age = 35 ):
  "This prints a passed info into this function"
  print "Name: ", name;
  print "Age ", age;
  return;

# Now you can call printinfo function
printinfo( age=50, name="miki" );
printinfo( name="miki" );

登入後複製

当执行上面的代码,产生以下结果:

Name: miki
Age 50
Name: miki
Age 35

登入後複製

可变长度参数:

可能需要处理函数比在定义函数指定多个参数。这些参数被称为可变长度参数,在函数定义没有被命名,不像必需默认参数。

非关键字可变参数的函数的一般语法是这样的:

def functionname([formal_args,] *var_args_tuple ):
  "function_docstring"
  function_suite
  return [expression]

登入後複製

星号(*)被放置,将持有的所有非关键字变量参数的值在变量名前。该元组保持为空,如果函数调用期间没有指定任何其他参数。下面是一个简单的例子:

#!/usr/bin/python

# Function definition is here
def printinfo( arg1, *vartuple ):
  "This prints a variable passed arguments"
  print "Output is: "
  print arg1
  for var in vartuple:
   print var
  return;

# Now you can call printinfo function
printinfo( 10 );
printinfo( 70, 60, 50 );

登入後複製

当执行上面的代码,产生以下结果:

Output is:
10
Output is:
70
60
50

登入後複製

匿名函数:

可以使用lambda关键字来创建小的匿名函数。这些函数被称为匿名,因为它们不是以标准方式通过使用def关键字声明。

  • Lambda形式可以采取任何数量的参数,但在表现形式上只返回一个值。它们不能包含命令或多个表达式。
  • 匿名函数不能直接调用打印,因为需要lambda表达式。
  • lambda函数都有自己的命名空间,并且不能访问变量高于在其参数列表和那些在全局命名空间等。
  • 尽管似乎lambda是一个函数的单行版本,它们不是在C或C++,其宗旨是通过调用出于性能原因在传递函数的堆栈分配相当于一行的声明。

语法

lambda函数的语法仅包含单个语句,如下:

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

登入後複製

以下为例子来说明函数lambda形式是如何工作的:

#!/usr/bin/python

# Function definition is here
sum = lambda arg1, arg2: arg1 + arg2;

 

# Now you can call sum as a function
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )

登入後複製

当执行上面的代码,产生以下结果:

Value of total : 30
Value of total : 40

登入後複製

return语句:

该语句返回[表达式]退出功能,可选地传递回一个表达式给调用者。不带参数return语句返回None。

以上所有的例子都没有返回任何值,但如果喜欢,可以从一个函数返回值:

#!/usr/bin/python

# Function definition is here
def sum( arg1, arg2 ):
  # Add both the parameters and return them."
  total = arg1 + arg2
  print "Inside the function : ", total
  return total;

# Now you can call sum function
total = sum( 10, 20 );
print "Outside the function : ", total 

登入後複製

当执行上面的代码,产生以下结果:

Inside the function : 30
Outside the function : 30

登入後複製

变量的作用域:

程序中的所有变量可能不会在该程序中的所有位置进行访问。这取决于所声明的变量。

变量的作用域确定了程序,可以访问一个特定的标识符的一部分。在Python中的变量两个基本范畴:

  • 全局变量
  • 局部变量

全局与局部变量:

这是一个函数体内部定义的变量具有局部范围,而那些之外定义具有全局范围。

局部变量只能在函数内部被声明和访问,而全局变量可以在整个程序主体由所有函数进行访问。当调用一个函数,它里面声明的变量都纳入范围。下面是一个简单的例子:

#!/usr/bin/python

total = 0; # This is global variable.
# Function definition is here
def sum( arg1, arg2 ):
  # Add both the parameters and return them."
  total = arg1 + arg2; # Here total is local variable.
  print "Inside the function local total : ", total
  return total;

# Now you can call sum function
sum( 10, 20 );
print "Outside the function global total : ", total 

登入後複製

当执行上面的代码,产生以下结果:

Inside the function local total : 30
Outside the function global total : 0

登入後複製

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles