Python3中的函数
Python3中的函数
枫叶云 发表于1周前
Python3中的函数
  • 发表于 1周前
  • 阅读 304
  • 收藏 9
  • 点赞 1
  • 评论 0
【腾讯云】新注册用户域名抢购1元起>>>   
摘要: Python3中的函数介绍: 1.函数的定义 , 2.函数的调用, 3.函数的参数, 4.函数的返回值, 5.函数的变量, 6.匿名函数, 7.高阶函数

Python 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。但也可以自己创建函数,这被叫做用户自定义函数。

1.函数的定义:

你可以定义一个由自己想要功能的函数,以下是简单的规则:
  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • pass 关键字,代表什么都不干
  • exit(num)   强行退出(num:是一个数字,显示为退出码)
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

语法

def functionname( parameters ): function_suite return [expression] 默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来的。 举例1: def add(x, y): print(“x = {0}”.format(x)) print(“x = {0}”.format(x)) print(“x + y = {0}”.format(x+y)) return x+y  举例2: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/4/14 20:31 # @Author : Feng Xiaoqing # @File : demo1.py # @Function: ----------- def f(x,l=[]): for i in range(x): l.append(i*i) print(l) # f(2) = f(2, l=[]) f(2) # 结果:[0, 1] f(3,[3,2,1]) # 结果: [3, 2, 1, 0, 1, 4] f(x=3, l=[]) # 结果: [0, 1, 4] 运行结果: [0, 1] [3, 2, 1, 0, 1, 4] [0, 1, 4]  

2.函数的调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。 这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。 如下实例调用了add()函数: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/4/15 21:01 # @Author : Feng Xiaoqing # @File : demo2.py # @Function: ----------- # 自定义加法函数add() def add(x,y): print("{0} + {1} = {2}".format(x,y,x+y)) return print("finished") #在return后不会执行这条语句 # 调用函数,计算2+3的得数 add(2,3) 运行结果: 2 + 3 = 5

 

3.函数的参数

形式参数和实际参数     在定义函数时,函数名后面,括号中的变量名称叫做形式参数,或者称为"形参"     在调用函数时,函数名后面,括号中的变量名称叫做实际参数,或者称为"实参"          def fun(x,y):  //形参     print(x + y)     fun(1,2)     //实参     3     fun('a','b')     ab 函数默认参数:     缺省参数(默认参数) def fun(x,y=100)     print x,y #调用: fun(1,2) fun(1)     定义: #!/usr/bin/env python # -*- coding: utf-8 -*- def fun(x=2,y=3): print x+y          调用: fun() #结果: 5 fun(23) #结果 26 fun(11,22) #结果: 33   我们经常在看别人的代码中,经常出现def(*args, **kwargs)这样的表现形式: *args             指的是:tuple  (1, )
**kwargs       指的是:dict   {“k”: “v”}
fun(*args, **keargs)
fun(1, 2, 3, 4, 5, a=10, b=40)

 

4.函数的返回值

函数返回值: 函数被调用后会返回一个指定的值 函数调用后默认返回None return返回值 返回值可以是任意类型 return执行后,函数终止 return与print区别 #!/usr/bin/env python # -*- coding:utf-8 -*- def fun(): print 'hello world' return 'ok' print 123 fun() #结果 hello world 123 None

 

5.函数的变量

局部变量和全局变量: Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量。 def fun():    x=100    print x fun() x = 100      def fun():    global x   //声明    x +=1    print x fun() print x       外部变量被改(x由100改为101): x = 100 def fun(): global x x += 1 print (x) fun() print (x) #结果 101 101   内部变量外部也可用: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/4/15 21:33 # @Author : Feng Xiaoqing # @File : demo2.py # @Function: ----------- x = 100 def fun(): global x x +=1 global y y = 1 print(x) fun() print(x) print(y) #结果: 101 101 1     统计程序中的变量,返回的是个字典 #!/usr/bin/env python # -*- coding:utf-8 -*- x = 100 def fun(): x = 1 y = 1 print(locals()) fun() print (locals())   结果: {'y': 1, 'x': 1} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02FF6390>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/PycharmProjects/PythonLive/untitled/day07/demo2.py', '__cached__': None, 'x': 100, 'fun': <function fun at 0x052D2390>}

 

6.匿名函数

顾名思义就是没有名字的函数,那为什么要设立匿名函数,他有什么作用呢?
lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方
python 使用 lambda 来创建匿名函数。
  • lambda只是一个表达式,函数体比def简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法

lambda函数的语法只包含一个语句,如下: lambda [arg1 [,arg2,.....argn]]:expression  举例: 求两数的乘积: 常规写法: def fun(x,y) return x*y lambda版本写法: r = lambda x,y:x*y


7.高阶函数

(1)map(f, list) 返回每个元素通过f计算完的value的list map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。 举例:计算列表里值的平方 #!/usr/bin/env python # -*- coding:utf-8 -*- def f(x): return x*x for i in map(f,[1,2,3,4,5,6,7]): print(i) 结果: 1 4 9 16 25 36 49   (2)reduce(f,list)函数(求list中数的和) reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是: 举例:计算列表中所有数的和 #!/usr/bin/env python # -*- coding:utf-8 -*- from functools import reduce #导入reduce函数 def f(x,y): return x+y print(reduce(f,[1,2,3,4,5,6,7,8,9,10])) print(reduce(f,range(1,101))) #结果: 55 5050   (3)filter()函数(过滤) filter函数接收一个函数f和一个list,函数f的作用是对每个元素进行判断,返回True或者False,filter()根据判断结果自动过滤掉不符合条件的元素,返回符合要求的元素组成的list filter(lamdba x: x%2 ==1, [1, 2, 3, 4, 5]) 举例:计算list中小于7的数 #!/usr/bin/env python # -*- coding:utf-8 -*- for i in filter(lambda x:x<7, [1, 2, 3, 4, 5,40,8]): print(i) #结果: 1 2 3 4 5   (4)sorted()函数(排序) sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
# sorted(iterable, key, reverse) # iterable 一个可迭代的对象 # key 对什么进行排序 # reverse bool类型,如果为true为反序, 默认为false # 返回值是一个list 举例: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/4/15 22:47 # @Author : Feng Xiaoqing # @File : demo3.py # @Function: ----------- m = dict(a=1, c=10, b=20, d=15) print(sorted(m.items(), key = lambda d:d[1],reverse = True)) #按value值倒序排列 #结果: [('b', 20), ('d', 15), ('c', 10), ('a', 1)]  
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 8
博文 11
码字总数 14099
×
枫叶云
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: