大数据培训新三板挂牌机构 股票代码:837906 | EN CN
Python3引入什么新的东西?
Python3环境安装设置
Python3基础语法
Python3变量类型
Python算术运算符实例
Python3比较运算符实例
Python3赋值运算符实例
Python3位运算符实例
Python3逻辑运算符实例
Python3成员运算符实例
Python3标识运算符实例
Python3运算符优先级示例
Python3基本运算符
Python3 if语句
Python3 if...elseif...else语句
Python3嵌套if语句
Python3决策
Python3 while循环语句
Python3 for循环语句
Python3嵌套循环
Python3 break语句
Python3 continue语句
Python3 pass语句
Python3循环
Python3 abs()函数
Python3 ceil()函数
Python3 exp()函数
Python3 fabs()函数
Python3 floor()函数
Python3 log()函数
Python3 log10()函数
Python3 max()函数
Python3 min()函数
Python3 modf()函数
Python3 pow()函数
Python3 round()函数
Python3 sqrt()函数
Python3 choice()函数
Python3 randrange()函数
Python3 random()函数
Python3 seed()函数
Python3 shuffle()函数
Python3 uniform()函数
Python3 acos()函数
Python3 asin()函数
Python3 atan()函数
Python3 atan2()函数
Python3 cos()函数
Python3 hypot()函数
Python3 sin()函数
Python3 tan()函数
Python3 degrees()函数
Python3 radians()函数
Python3数字
Python3 string.capitalize()方法
Python3 string.center()方法
Python3 string.count()方法
Python3 string.decode()方法
Python3 string.endswith()方法
Python3 string.expandtabs()方法
Python3 string.encode()方法
Python3 string.find()方法
Python3 string.index()方法
Python3 string.isalnum()方法
Python3 string.isalpha()方法
Python3 string.isdigit()方法
Python3 string.tolower()方法
Python3 string.isnumeric()方法
Python3 string.isspace()方法
Python3 string.istitle()方法
Python3 string.isupper()方法
Python3 string.join()方法
Python3 string.len()方法
Python3 string.ljust()方法
Python3 string.lower()方法
Python3 string.lstrip()方法
Python3 string.maketrans()方法
Python3 string.max()方法
Python3 string.min()方法
Python3 string.replace()方法
Python3 string.rfind()方法
Python3 string.rindex()方法
Python3 string.rjust()方法
Python3 string.rstrip()方法
Python3 string.split()方法
Python3 string.splitlines()方法
Python3 string.startswith()方法
Python3 string.strip()方法
Python3 string.swapcase()方法
Python3 string.title()方法
Python3 string.translate()方法
Python3 string.upper()方法
Python3 string.zfill()方法
Python3 string.isdecimal()方法
Python3字符串
Python3 list.cmp()方法
Python3 list.len()方法
Python3 list.max()方法
Python3 list.min()方法
Python3 list.list()方法
Python3 list.append()方法
Python3 list.count()方法
Python3 list.extend()方法
Python3 list.index()方法
Python3 list.insert()方法
Python3 list.pop()方法
Python3 list.remove()方法
Python3 list.reverse()方法
Python3 list.sort()方法
Python3列表
Python3 tuple.cmp()方法
Python3 tuple.len()方法
Python3 tuple.max()方法
Python3 tuple.min()方法
Python3 tuple.tuple()方法
Python3元组
Python3 dictionary.cmp()方法
Python3 dictionary.len()方法
Python3 dictionary.str()方法
Python3 dictionary.type()方法
Python3 dictionary.clear()方法
Python3 dictionary.copy()方法
Python3 dictionary.fromkeys()方法
Python3 dictionary.get()方法
Python3 dictionary.has_key()方法
Python3 dictionary.items()方法
Python3 dictionary.keys()方法
Python3 dictionary.setdefault()方法
Python3 dictionary.update()方法
Python3 dictionary.values()方法
Python3字典
Python3 time.altzone()方法
Python3 time.asctime()方法
Python3 time.clock()方法
Python3 time.ctime()方法
Python3 time.gmtime()方法
Python3 time.localtime()方法
Python3 time.mktime()方法
Python3 time.sleep()方法
Python3 time.strftime()方法
Python3 time.time()方法
Python3 time.tzset()方法
Python3日期和时间
Python3函数
Python3模块
Python3 file.close()方法
Python3 file.tell()方法
Python3 file.truncate()方法
Python3 file.write()方法
Python3 file.writelines()方法
Python3 file.flush()方法
Python3 file.fileno()方法
Python3 file.isatty()方法
Python3 file.next()方法
Python3 file.read()方法
Python3 file.readline()方法
Python3 file.readlines()方法
Python3 file.seek()方法
Python3文件方法
Python3 os.access()方法
Python3 os.chdir()方法
Python3 os.chflags()方法
Python3 os.chmod()方法
Python3 os.chown()方法
Python3 os.chroot()方法
Python3 os.close()方法
Python3 os.closerange()方法
Python3 os.dup()方法
Python3 os.dup2()方法
Python3 os.fchdir()方法
Python3 os.fchmod()方法
Python3 os.fchown()方法
Python3 os.fdatasync()方法
Python3 os.fopen()方法
Python3 os.fpathconf()方法
Python3 os.fstat()方法
Python3 os.fstatvfs()方法
Python3 os.fsync()方法
Python3 os.ftruncate()方法
Python3 os.getcwd()方法
Python3 os.getcwdu()方法
Python3 os.isatty()方法
Python3 os.lchflags()方法
Python3 os.lchmod()方法
Python3 os.lchown()方法
Python3 os.link()方法
Python3 os.listdir()方法
Python3 os.lseek()方法
Python3 os.lstat()方法
Python3 os.major()方法
Python3 os.makedev()方法
Python3 os.makedirs()方法
Python3 os.minor()方法
Python3 os.mkdir()方法
Python3 os.mkfifo()方法
Python3 os.mknod()方法
Python3 os.open()方法
Python3 os.openpty()方法
Python3 os.pathconf()方法
Python3 os.pipe()方法
Python3 os.popen()方法
Python3 os.read()方法
Python3 os.readlink()方法
Python3 os.remove()方法
Python3 os.removedirs()方法
Python3 os.rename()方法
Python3 os.renames()方法
Python3 os.rmdir()方法
Python3 os.stat()方法
Python3 os.stat_float_times()方法
Python3 os.statvfs()方法
Python3 os.symlink()方法
Python3 os.tcgetpgrp()方法
Python3 os.tcsetpgrp()方法
Python3 os.tempnam()方法
Python3 os.tmpfile()方法
Python3 os.tmpnam()方法
Python3 os.ttyname()方法
Python3 os.unlink()方法
Python3 os.utime()方法
Python3 os.walk()方法
Python3 os.write()方法
Python3 os文件目录的方法
Python3文件操作
Python3标准异常
Python3断言
Python3异常处理

Python3函数

于2017-07-06由小牛君创建

分享到:


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

你可以已经知道(了解),Python有类似于 printf()等许多内置函数。但你也可以创建自己的函数。 这些函数被称为:用户自定义函数。

如何定义一个函数

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

  • 函数模块使用 def 关键字开头,后跟函数名以及括号( ( ) ).

  • 任何输入参数或参数都应该放在这些括号内。 还可以定义这些括号内的参数。

  • 函数的第一个语句可以是一个可选的声明 - 函数或文档说明的字符串。
  • 每个函数中的代码块使用冒号(:)开始和缩进。
  • 语句返回[expression]存在于函数中,一个表达式可选地传递给调用者。不带参数的return语句返回None。

语法

def functionname( parameters ):
   "function_docstring"
   function_suite
   return [expression]
默认情况下,参数有一个位置的行为,你需要告知它们定义的相同顺序。

示例

下面的函数接受一个字符串作为输入参数,并打印标准屏幕上。
def printme( str ):
   "This prints a passed string into this function"
   print (str)
   return

如何调用函数

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

当函数的基本结构完成,可以通过从其它函数或直接从Python提示符调用它执行它。下面是一个调用 print()函数的例子 -

#!/usr/bin/python3

# 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/python3

# Function definition is here
def changeme( mylist ):
   "This changes a passed list into this function"
   print ("Values inside the function before change: ", mylist)
   mylist[2]=50
   print ("Values inside the function after change: ", mylist)
   return

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

在这里,我们维持传递的对象参考,并在同一个对象追加值。因此,这将产生以下结果 -

Values inside the function before change:  [10, 20, 30]
Values inside the function after change:  [10, 20, 50]
Values outside the function:  [10, 20, 50]
存在这样的情况:参数正在被引用传递,以及参考被覆盖调用函数里面的一个例子。
#!/usr/bin/python3

# Function definition is here
def changeme( mylist ):
   "This changes a passed list into this function"
   mylist = [1,2,3,4] # This would assi 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/python3

# 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解释器能够使用提供带参数的值相匹配关键字。您也可以使用关键字调用print()函数在以下几个方面-

#!/usr/bin/python3

# 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/python3

# 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/python3

# 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/python3

# 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

匿名函数

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

  • lambda形式可以使用任何数量的参数,但在表现形式上只返回一个值。 它们不能包含命令或多个表达式。

  • 匿名函数不能直接调用打印,因为lambda需要表达式。
  • lambda函数都有自己的命名空间,并且不能访问除了在其参数列表和在全局命名空间中的其他变量。
  • 尽管似乎 lambda 是一个函数的单行版,它们不等同于C或C++的内联声明,它的目的是调用出于性能考虑,在传递函数由堆栈分配。

语法

lambda函数的语法只包含一个声明,如下 -
lambda [arg1 [,arg2,.....argn]]:expression
以下是显示 lambda形式函数如何工作的例子-
#!/usr/bin/python3

# 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语句

该语句返回[expression] 存在一个函数,一个表达式可选地传递给调用者。不带参数的return语句一样返回None。

所有上述实施例不返回任何值。您可以从一个函数返回一个值如下 -
#!/usr/bin/python3

# 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/python3

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