python函数手册中文_Python中文手册-Python函数

Python函数

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

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

定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:函数代码块以def关键词开头,后接函数标识符名称和圆括号()。

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

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

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

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

语法def functionname( parameters ):

"函数_文档字符串"

function_suite

return [expression]

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

实例

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

"打印传入的字符串到标准显示设备上"

print str

return

函数调用

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

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

如下实例调用了printme()函数:#coding=utf-8

#!/usr/bin/python

# Function definition is here

def printme( str ):

"打印任何传入的字符串"

print str;

return;

# Now you can call printme function

printme("我要调用用户自定义函数!");

printme("再次调用同一函数");

以上实例输出结果:我要调用用户自定义函数!

再次调用同一函数

参数传递

在python中,类型属于对象,变量是没有类型的:a=[1,2,3]

a="w3cschool"

以上代码中,[1,2,3] 是 List 类型,"w3cschool"是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指向它。

按值传递参数和按引用传递参数(传可变对象实例)

所有参数(自变量)在Python里都是按引用传递。如果你在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。例如:#coding=utf-8

#!/usr/bin/python

# 可写函数说明

def changeme( mylist ):

"修改传入的列表"

mylist.append([1,2,3,4]);

print "函数内取值: ", mylist

return

# 调用changeme函数

mylist = [10,20,30];

changeme( mylist );

print "函数外取值: ", mylist

传入函数的和在末尾添加新内容的对象用的是同一个引用。故输出结果如下:函数内取值: [10, 20, 30, [1, 2, 3, 4]]

函数外取值: [10, 20, 30, [1, 2, 3, 4]]

参数

以下是调用函数时可使用的正式参数类型:必备参数

命名参数

缺省参数

不定长参数

必备参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

调用printme()函数,你必须传入一个参数,不然会出现语法错误:#coding=utf-8

#!/usr/bin/python

#可写函数说明

def printme( str ):

"打印任何传入的字符串"

print str;

return;

#调用printme函数

printme();

以上实例输出结果:Traceback (most recent call last):

File "test.py", line 11, in

printme();

TypeError: printme() takes exactly 1 argument (0 given)

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

以下实例在函数 printme() 调用时使用参数名:#!/usr/bin/python

# -*- coding: UTF-8 -*-

#可写函数说明

def printme( str ):

"打印任何传入的字符串"

print str;

return;

#调用printme函数

printme( str = "My string");

以上实例输出结果:My string

下例能将关键字参数顺序不重要展示得更清楚:#!/usr/bin/python

# -*- coding: UTF-8 -*-

#可写函数说明

def printinfo( name, age ):

"打印任何传入的字符串"

print "Name: ", name;

print "Age ", age;

return;

#调用printinfo函数

printinfo( age=50, name="miki" );

以上实例输出结果:Name: miki

Age 50

命名参数

命名参数和函数调用关系紧密,调用方用参数的命名确定传入的参数值。你可以跳过不传的参数或者乱序传参,因为Python解释器能够用参数名匹配参数值。用命名参数调用printme()函数:#coding=utf-8

#!/usr/bin/python

#可写函数说明

def printme( str ):

"打印任何传入的字符串"

print str;

return;

#调用printme函数

printme( str = "My string");

以上实例输出结果:My string

下例能将命名参数顺序不重要展示得更清楚:#coding=utf-8

#!/usr/bin/python

#可写函数说明

def printinfo( name, age ):

"打印任何传入的字符串"

print "Name: ", name;

print "Age ", age;

return;

#调用printinfo函数

printinfo( age=50, name="miki" );

以上实例输出结果:Name: miki

Age 50

缺省参数

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:#coding=utf-8

#!/usr/bin/python

#可写函数说明

def printinfo( name, age = 35 ):

"打印任何传入的字符串"

print "Name: ", name;

print "Age ", age;

return;

#调用printinfo函数

printinfo( age=50, name="miki" );

printinfo( name="miki" );

以上实例输出结果:Name: miki

Age 50

Name: miki

Age 35

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:def functionname([formal_args,] *var_args_tuple ):

"函数_文档字符串"

function_suite

return [expression]

加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可。如下实例:#coding=utf-8

#!/usr/bin/python

# 可写函数说明

def printinfo( arg1, *vartuple ):

"打印任何传入的参数"

print "输出: "

print arg1

for var in vartuple:

print var

return;

# 调用printinfo 函数

printinfo( 10 );

printinfo( 70, 60, 50 );

以上实例输出结果:输出:

10

输出:

70

60

50

匿名函数

python 使用 lambda 来创建匿名函数。lambda只是一个表达式,函数体比def简单很多。

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法

lambda函数的语法只包含一个语句,如下:lambda [arg1 [,arg2,.....argn]]:expression

如下实例:#coding=utf-8

#!/usr/bin/python

#可写函数说明

sum = lambda arg1, arg2: arg1 + arg2;

#调用sum函数

print "Value of total : ", sum( 10, 20 )

print "Value of total : ", sum( 20, 20 )

以上实例输出结果:Value of total : 30

Value of total : 40

return语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:#coding=utf-8

#!/usr/bin/python

# 可写函数说明

def sum( arg1, arg2 ):

# 返回2个参数的和."

total = arg1 + arg2

print "Inside the function : ", total

return total;

# 调用sum函数

total = sum( 10, 20 );

print "Outside the function : ", total

以上实例输出结果:Inside the function : 30

Outside the function : 30

变量作用域

一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:全局变量

局部变量

变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:#coding=utf-8

#!/usr/bin/python

total = 0; # This is global variable.

# 可写函数说明

def sum( arg1, arg2 ):

#返回2个参数的和."

total = arg1 + arg2; # total在这里是局部变量.

print "Inside the function local total : ", total

return total;

#调用sum函数

sum( 10, 20 );

print "Outside the function global total : ", total

以上实例输出结果:Inside the function local total : 30

Outside the function global total : 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大于3小于4的整数bleem_比三大,比四小的整数是存在的吗?

这个问题很有意思,看了不少评论,里面谈到数学是基于现实而不是臆想。一开始确实是这样的,例如整数1、2、3、4。它可以是我们祖先白天打猎获取的几只鹿。这些是自然界存在的数。那么,评论说数学完全是基于现实而建立的人&#xff0…

linux命令-管理用户

目录 一、导入 1、基础 2、切换用户 二、用户与用户组基本信息 1、用户基本信息: /etc/passwd 2、用户密码信息: /etc/shadow 3、用户组配置信息: /etc/group 4、用户组密码信息: /etc/gshadow 三、管理用户 1、添加用户-useradd命…

springboot配置文件_SpringBoot系列干货:配置文件详解

在Spring Boot中,配置文件有两种不同的格式:1.一个是application.propertiesserver.port8888server.servlet.context-pathdemo2.另一个是application.ymlserver:port: 8888servlet:context-path: /demo配置文件与配置类的属性映射方式person:name: zhangsanage: 18实…

activemq 开启监听_SpringBoot集成ActiveMQ怎么实现Topic发布/订阅模式通信?

上一期我们讲了SpringBoot集成activeMQ实现Queue模式点对点通信,这一期我们接着讲SpringBoot集成activeMQ实现Topic发布/订阅模式通信。发布/订阅模式通信是对点对点通信模式的扩展。Queue模式下一个人发送的消息只能由一个人接收,而Topic模式下&#xf…

电脑右击新建没有Word、Excel怎么办

方法/步骤 1.点击开始,找到运行命令行,输入regedit,打开注册表。 2.在左侧找到HKEY_CLASSES_ROOT目录,并展开。 3.利用CTRL F 快捷键,查找“docx”的位置,当然这里也可以自己下拉查找。 4.找到.docx,不用展…

python列表、字典、元组的用法及区别_python列表,字典,元组简单用法示例

本文实例讲述了python列表,字典,元组简单用法。分享给大家供大家参考,具体如下: 列表 #_*_ coding:utf-8 _*_ # 列表,定义在方括号的形式中,可以进行切片操作。 #它没有固定类型的约束,即可以包…

实习日志_【人医札记】护理实习日志

实习日志:新起点01章莹 (河南鹤壁职业技术学院)盛夏七月,开始了我的实习生活……有幸可以来到兰溪市人民医院,经历了几十年风雨历程,一个花甲的峥嵘岁月,几十年璀璨硕果的积累,也让我对实习充满了期待&…

等价类划分法-案例剖析-设计测试用例

目录 等价类划分法概念 有效等价类和无效等价类 等价类设计测试用例步骤 案例1 案例2 案例3 等价类划分法概念 等价类划分法是把所有可能的输入数据,即程序的输入数据集合划分成若干个子集即等价类,然后从每个等价类中选取少量具有代表性的数据作为…

支持向量机的基本思想_支持向量机的分类思想

支持向量机是一种经典的机器学习算法,在小样本数据集的情况下有非常广的应用。本文将循序渐进地讲解支持向量机的分类思想。目录:函数间隔和几何间隔支持向量机的分类思想总结1.函数间隔和几何间隔为了能够更好的阐述支持向量机的分类思想,需要理解函数间…

mysql8.0版本的服务器名称_Linux服务器配置-VSFTP服务配置(六)

上文:Linux服务器配置-VSFTP服务配置(五)上文中已经介绍了使用数据库文件方式配置虚拟用户认证登录FTP服务器,这篇文件将介绍通过数据库方式(vsftpd服务pam_mysqlMySQL)配置虚拟用户认证登录FTP服务器。一、安装配置MySQL数据库这里以在CentOS6中安装MyS…

linux作业整理

软件工程2004班20201106401陈梓乐易子清的博客_CSDN博客-领域博主20201106402段雅菲Ya._的博客_CSDN博客-领域博主20201106403范冰范冰 软件工程的博客_CSDN博客-领域博主20201106404范笛笛低谷有雾aaa的博客_CSDN博客-领域博主20201106405冯燕不染 -的博客_CSDN博客-领域博主2…

java导出csv文件_R语言数据导入与导出

R语言数据导入与导出整这么一个系列,还是因为学R语言时遇到过一个非常“小白友好”的网站“DataScience Made Simple”。相信很多人搜到过这个网站,或许你在意到或许并没在意。年前试着和作者发了一封邮件,想要把他这个网站做成汉语版的帖子发…

主成分分析碎石图_ISLR读书笔记十九:主成分分析(PCA)

本文使用 Zhihu On VSCode 创作并发布前面写的一些统计学习方法都是属于监督学习(supervised learning),这篇主成分分析(principal components analysis,简称 PCA )和下一篇聚类分析(clustering…

office另存为pdf的加载项_pdf怎么转换成word?打工人必备的丛林法则

小编接受了一个工作,要批量将pdf转换成word,而且不太花钱的我(和大部分人一样,只想找免费的工具),在同事的帮助下,找到了很不错的办法,再加上我自己总结的几个办法,给大家分享一些干货。网上有不…

使用gdisk中的n新建分区时没有p和e选项

正常分区界面为: 但是分区时发现 不可选择主分区或者扩展分区。 原因分析: 1、使用p命令查看:已有三个分区 2、再进行分区时: 可能是默认的一个扩展分区---如果可以创建多个逻辑分区 也可能是一个主分区--只能创建一个主分区…

node本地连接服务器的数据库_基于Node.jsORM框架Sequelize的数据库迁移一

开课吧Web前端教程前言在日常的后端项目开发中,我们经常需要和数据库打交道。在这个过程中,我们需要创建数据库、表还有一些测试数据。许多时候,因为业务需求的变更导致的数据库结构的变化,需要修改数据库,添加新的测试…

使用OfficeTool免费安装Office

1、在office tool plus官网下载office tool plus Office Tool Plus 官方网站 - 一键部署 Office 2、安装office tool plus 3、卸载原office:点击工具箱-修复工具-移除Office,选择使用Office Tool Plus移除Office,点击开始。 4、点击部署-产品…

语言线性拟合线对称_文科生都能看懂的机器学习教程:梯度下降、线性回归、逻辑回归...

【新智元导读】虽然在Coursera、MIT、UC伯克利上有很多机器学习的课程,包括吴恩达等专家课程已非常经典,但都是面向有一定理科背景的专业人士。本文试图将机器学习这本深奥的课程,以更加浅显易懂的方式讲出来,让没有理科背景的读者…

c/c++读取txt文件中指定行的内容_和尧名大叔一起从0开始学Python编程-简单读写文件

0基础自学编程是很痛苦的一件事情,所以我想把自己学习的这个过程记录下来,让想学编程的人少走弯路,大叔文化程度较低,可能会犯一些错误,欢迎大家督促我。今天,我们来学习一下用Python简单读写文件&#xff…

excel从只有省市县的地址中分别提取省、市、县

提取省 LEFT(H2,MIN(FIND({"省","市","区"},H2&"省市区"))) 提取市 LEFT(SUBSTITUTE(H23,I23,""),MIN(FIND({"市","区","县","州"},SUBSTITUTE(H23,I23,"")&&qu…