重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Python 函数定义以及参数传递
创新互联公司一直通过网站建设和网站营销帮助企业获得更多客户资源。 以"深度挖掘,量身打造,注重实效"的一站式服务,以成都网站建设、网站设计、移动互联产品、网络营销推广服务为核心业务。十多年网站制作的经验,使用新网站建设技术,全新开发出的标准网站,不但价格便宜而且实用、灵活,特别适合中小公司网站制作。网站管理系统简单易用,维护方便,您可以完全操作网站资料,是中小公司快速网站建设的选择。
1.函数定义
#形如def func(args...):
doSomething123
以关键字def 开头,后面是函数名和参数下面是函数处理过程。
举例:
def add( a, b ):
return a+b12
参数可以设定默认值,如:
def add( a, b=10 ): #注意:默认值参数只会运算一次
return a+b12
默认值参数只会运算一次是什么意思?
def func( a, b=[] ): #b的默认值指向一个空的列表,每次不带默认值都会指向这块内存
b.append(a) return b
print(func(1))#向默认的空列表里加入元素1 ,默认列表里已经是[1]print(func(2))#向默认的列表里加入元素2,默认列表里已经是[1,2]print(func(3,[]))#向b指向的空列表里加入元素1 ,默认列表里还是[1,2]print(func(4))#向默认的列表里加入元素4,默认列表里已经是[1,2,4]'''
结果:
[1]
[1, 2]
[3]
[1, 2, 4]
'''12345678910111213141516
这下明白为什么默认参数只计算一次了吧,函数参数不传递时默认值总是指向固定的内存空间,就是第一次计算的空间。
2.参数传递
def func(a, b):
print('a=%d, b=%d' % (a,b) )12
在使用函数时可以如下方式,结果都是相同的
func(10,20) #不使用参数名,需要按参数顺序传递func(a=10,b=20) #使用参数名可以不按顺序传递func(b=20,a=10)#结果:a=10, b=20a=10, b=20a=10, b=201234567
如果函数定义形式如下方式:
def func(*args): #这种定义会把传递的参数包成元组
print(args,type(args))
func(10,20)#结果:#(10, 20) class 'tuple'1234567
举一个和上述过程相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
a = (10, 20)
func(*a) #在调用函数使用`*`则会把元组解包成单个变量按顺序传入函数#结果:a=10, b=20123456
总结:*号在定义函数参数时,传入函数的参数会转换成元组,如果 *号在调用时则会把元组解包成单个元素。
另一种定义:
def func(**kw):#使用**定义参数会把传入参数包装成字典dict
print(kw, type(kw) )
func(a=10,b=20)#这种函数在使用时必须指定参数值,使用key=value这种形式#结果:{'b': 20, 'a': 10} class 'dict'12345
相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
d = {'a':10, 'b':20 }
func(**d) #在调用时使用**会把字典解包成变量传入函数。12345
def func(*args, **kw):#这种形式的定义代表可以接受任意类型的参数
print(args,kw )12
总结:**号在定义函数参数时,传入函数的参数会转换成字典,如果 **号在调用时则会把字典解包成单个元素。
lambda表达式
lambda表达式就是一种简单的函数
形如 f = lambda 参数1,参数2: 返回的计算值
例如:
add = lambda x,y: x+y
print(add(1,2))'''
结果:3
'''12345
函数是什么?
定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
作用:函数能提高应用的模块性和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
函数是 python 的一等公民,函数也是对象。
使用函数有两个步骤:
1、定义函数 def 函数名(): 函数体
2、调用函数 函数名()
Python奉行简洁主义,易于读写,它使你能够专注于解决问题而不是去搞明白语言本身。
Python是开源软件。这意味着你不用花一分钱便能复制、阅读、改动它。
Python兼容众多平台,所以开发者不会遇到使用其他语言时常会遇到的困扰。
Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。
Python这门语言也是很有意思的,它有一个很强大的库,turtle,可以用来作画。
在所有编程语言中,函数的作用都是相似的
在开发程序的时候,某一段代码需要执行很多次,为了提高编写的效率以及代码的复用,需要把这一段代码封装成一个模块,这就是函数
虽然Python的开发效率较高,但是早年的Python的运行速度相对于其他语言要慢一些也是被很多程序员诟病Python的主要原因,但最近几年PyPy解释器在不断的提高着Python的运行速度 ,通过PyPy运行的程序,在某些场景下速度直接逼近C语言,相信再过几年,Python的运行速度将不再是问题。另外,由于近些年CPU处理速度的快速发展,编程语言本身的快慢在大多数业务场景下已不再被做为主要考量(除了对响应速度极为敏感的业务,如搜素),因此,可以看出Python在追求运行速度快上也是有所考虑的。想学的童鞋可以加企鹅裙前三位是227,中间是435,后三位是450可以 视频资料免费分享交流经验和讲解行情
最后一个就是Python的功能,由于环境机制和语言特性,让Python强大起来是分分钟的事情,只要会配置源,会配置环境,开发就会变得非常简单了,这是导致Python大火的另一个主要原因之一,Python的标准库和第三方库强大到你无法想象,无论你想从事任何方向的技术编程,你几乎都能找到相应的库支持,以下仅举几个栗子:
WEB开发:最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率web框架)
网络编程:支持高并发的Twisted网络框架, py3引入的asyncio使异步编程变的非常简单
爬虫:爬虫领域,Python几乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥
云计算:目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算
人工智能:谁会成为AI 和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说五年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么五年之后,趋势已经非常明确了,特别是前段时间 Facebook 开源了 PyTorch 之后,Python 作为 AI 时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅。
自动化运维:问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答案,它的名字叫Python
金融分析:我有个朋友之前在金融行业,10年的时候,他们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
科学运算:你知道么,97年开始,NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛
游戏开发:在网络游戏开发中Python也有很多应用。相比Lua or C++,Python 比 Lua 有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合作为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,然后用 C/C++ 在非常必要的时候写一些扩展。Python 非常适合编写 1 万行以上的项目,而且能够很好地把网游项目的规模控制在 10 万行代码以内。另外据我所知,知名的游戏文明就是用Python写的。
列举这么多之后,你会发现,Python几乎在上述每个领域都做的非常优秀,这是一门真正意义上的全栈语言,即使目前世界上使用最广泛的Java语言,在很多方面与Python相比也逊色很多!我目前还看不到有哪门语言,能同时在如此多的领域能做出这些成绩。所以,大胆来吧,不会错。
附上一张今年语言排行榜。
最后附Python岗位最新薪资
目前应用最多的:全栈开发、数据分析、运维开发,可以看到,Python工程师的起薪大多数在15K起,3年以上工程师的起薪大多超过20K。