当前位置:首页 > 消费电子 > 消费电子
[导读]Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, [2] 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。 Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。 Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。

由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。例如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python语言讲授。众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,例如如下3个十分经典的科学计算扩展库:NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。2018年3月,该语言作者在邮件列表上宣布Python 2.7将于2020年1月1日终止支持。用户如果想要在这个日期之后继续得到与Python 2.7有关的支持,则需要付费给商业供应商。

一,函数简介

如数学上的函数一样,例如三角函数sin(),给一个角度值,他就会有一个结果。用计算器计算时,我们知道输入角度就会有结果,那么在编程时如何实现sin()这个函数的功能呢?

1,函数的基本概念

函数也叫功能,它是对数据与代码的封装,实现了代码的复用。

当我们在pycharm中写代码时,假如先写了一个功能的代码,我们可以右键进行运行;如果我们又写了一个功能代码,点击运行时,两个功能代码都会运行,这时就可以把各个功能的代码块进行封装起来,写成函数。下次想要用哪个功能就调哪个函数。

2,函数的分类

python函数有四类,分别是:内置函数(builtin functions),标准库函数,第三方库函数,自定义函数。

内置函数:python一经运行就加载到内存的,例如有list,len,str等函数

标准库函数:需要用import语句进行导入,常见标准库有time,os等

第三方库:需要另外下载到本地的库,例如opencv库,然后用import导入

自定义函数:自己在模块里的写的函数

二,函数的定义与调用

1,python函数的定义

定义语法如下:

def 函数名 (参数) :

'''文档字符串'''

函数体/若干语句

def func():

"""

打印'人生苦短,我学python'

"""

print('人生苦短,我学python')

当python解释器遇到def时,他就会在内存里创建一块内存块来存储代码信息,即函数对象,然后将内存块的首地址给函数名称,实现变量名与函数对象的绑定。

然而并不会执行,因为还没有调用。

2,函数的调用

语法格式如下:

函数名()

def func():

"""

打印'人生苦短,我学python'

"""

print('人生苦短,我学python')

func()

# 人生苦短,我学python

在函数名的后面加上英文小括号()即可。

另外除了用函数名来绑定函数对象之外,也可以用其他变量名来绑定函数。

def func():

"""

打印'人生苦短,我学python'

"""

print('人生苦短,我学python')

func_copy = func # func_copy也与函数对象进行了绑定

func_copy()

# 人生苦短,我学python

函数对象也有三属性,也就是类型,id,值。

类型就是函数类型;id就是函数对象的地址;值就是函数封装的各种数据和代码,但是利用print打印时只会打印出函数的id地址。

def func():

"""

打印'人生苦短,我学python'

"""

print('人生苦短,我学python')

func_copy = func

print(func_copy, 'and', type(func_copy), 'and', id(func_copy), 'and', id(func))

# and and 2981859760744 and 2981859760744

3,return语句

return语句用于将函数处理结果返回,或者返回一些其他数据。当return被执行,代表函数调用结束,也就是说return语句的作用之二就是结束函数的调用。

def maxab(a, b):

'''

比较两个整数的大小

'''

if type(a) == int and type(b) == int:

return a if a >= b else b

else:

return '类型错误'

print(maxab(1, 2))

print(maxab(1, 'q'))

# 2

# 类型错误

如果函数体里不写return,默认返回None。

def pr():

print(666)

print(pr()) # 先调用pr,再打印出返回值

# 666

# None

return可以返回任何东西。

def test():

return [1, 2, 3, 4] # 返回一个列表

print(test())

def test():

return test # 返回函数对象本身

print(test()())

def test():

return range(5) # 返回一个range对象

for itm in test():

print(itm)

# [1, 2, 3, 4]

#

# 0

# 1

# 2

# 3

# 4

三,变量的作用域(全局变量和局部变量)

变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。变量分为:全局变量、局部变量。

所谓起作用的范围就是,某些代码他隶属于不同的语句。例如定义了一个函数,函数体里的所有代码是属于这个函数的,因为缩进已经不同了。在函数体里的定义的变量在函数里面可以使用,但是在函数外边却用不了。

1,全局变量

1 ,在函数和类定义之外声明的变量。全局变量的缩进为0,作用域为定义的模块,从定义位置开始直到模块结束。也就是说,全局变量即使没有定义在函数里边,但是在函数里边也可以使用,只是使用而已,修改的话需要作说明。这就是全局变量在整个.py文件里都可以访问使用的原因。

2 ,全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。

3 ,要在函数内修改全局变量的值,使用 global 声明一下。

out = 520 # 全局变量

print(out, 'and id is ', id(out))

def test():

out = 520 # 局部变量

print(out, 'and id is ', id(out))

test()

# 520 and id is 2305420215504

# 520 and id is 2305450107984

# 明显两个id不同,因为在函数里面对全局变量进行修改,会隐藏全部变量,另外生成一个新对象

两个out变量名字虽然相同,但不是绑定的同一个对象。但是当整数比较小时,由于整数缓存,他们都是同一个变量。

out = 520

print(out, 'and id is ', id(out))

def test():

global out # 用global声明out变量和全局变量out是同一个

print(out, 'and id is ', id(out))

test()

# 520 and id is 2355312182480

# 520 and id is 2355312182480

在函数里用global把同名变量声明为全局变量,则会修改函数外部的变量。

2,局部变量

1 ,在函数体中声明的变量。(包括形参变量也是局部变量)。

2 ,局部变量的引用比全局变量快,优先考虑使用。这里是说,在函数或者类里面操作自己的局部变量比操作外部变量快。

3 ,如果局部变量和全局变量同名,如果对同名变量进行赋值操作,则在函数内隐藏全局变量,只使用同名的局部变量

Python 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。

任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

函数内容以冒号起始,并且缩进。

return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

语法

def functionname( parameters ): "函数_文档字符串" function_suite return [expression]

默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。

实例

以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。

实例(Python 2.0+)

def printme( str ): "打印传入的字符串到标准显示设备上" print str return

函数调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。

这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。

如下实例调用了printme()函数:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- # 定义函数 def printme( str ): "打印任何传入的字符串" print str return # 调用函数 printme("我要调用用户自定义函数!") printme("再次调用同一函数")

以上实例输出结果:

我要调用用户自定义函数!

再次调用同一函数

参数传递

在 python 中,类型属于对象,变量是没有类型的:

a=[1,2,3] a="Runoob"

以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。

可更改(mutable)与不可更改(immutable)对象

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。

可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

python 函数的参数传递:

不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

python 传不可变对象实例

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- def ChangeInt( a ): a = 10 b = 2 ChangeInt(b) print b # 结果是 2

实例中有 int 对象 2,指向它的变量是 b,在传递给 ChangeInt 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 Int 对象,在 a=10 时,则新生成一个 int 值对象 10,并让 a 指向它。

声明:该篇文章为本站原创,未经授权不予转载,侵权必究。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭