Python 函数(二)

 

参数

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

  • 必备参数
  • 关键字参数
  • 默认参数
  • 不定长参数

必备参数

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

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

#!/usr/bin/python
# -*- coding: UTF-8 -*-#可写函数说明 def printme( str ): "打印任何传入的字符串" print str; return; #调用printme函数 printme();

以上实例输出结果:

Traceback (most recent call last): File "test.py", line 11, in <module> printme(); TypeError: printme() takes exactly 1 argument (0 given)






关键字参数

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

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

以下实例在函数 printme() 调用时使用参数名:

#!/usr/bin/python
# -*- coding: UTF-8 -*-#可写函数说明 def printinfo( name, age ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return; #调用printinfo函数 printinfo( age=50, name="miki" );

缺省参数

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

#!/usr/bin/python
# -*- coding: UTF-8 -*-#可写函数说明 def printinfo( name, age = 35 ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return;
printinfo( name="miki" );

以上实例输出结果:

Name: miki Age 35

不定长参数

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

def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串" function_suite return [expression]

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

#!/usr/bin/python
# -*- coding: UTF-8 -*-# 可写函数说明 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

如下实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-# 可写函数说明 sum = lambda arg1, arg2: arg1 + arg2; # 调用sum函数 print "相加后的值为 : ", sum( 10, 20 ) print "相加后的值为 : ", sum( 20, 20 )

以上实例输出结果:

相加后的值为 :  30 相加后的值为 : 40

return 语句

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

#!/usr/bin/python
# -*- coding: UTF-8 -*-# 可写函数说明 def sum( arg1, arg2 ): # 返回2个参数的和." total = arg1 + arg2 print "函数内 : ", total return total; # 调用sum函数 total = sum( 10, 20 );

以上实例输出结果:

函数内 :  30

变量作用域

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

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

 

  • 全局变量
  • 局部变量

全局变量和局部变量

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

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

#!/usr/bin/python
# -*- coding: UTF-8 -*-total = 0; # 这是一个全局变量 # 可写函数说明 def sum( arg1, arg2 ): #返回2个参数的和." total = arg1 + arg2; # total在这里是局部变量. print "函数内是局部变量 : ", total return total; #调用sum函数 sum( 10, 20 ); print "函数外是全局变量 : ", total 

 

 

转载于:https://www.cnblogs.com/is-Tina/p/7623264.html

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

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

相关文章

C:\WINDOWS\Installer文件夹的安全清理

这几天微软发布了不少补丁&#xff0c;系统盘&#xff08;C:\&#xff09;又开始空间告警。没办法又要研究一下哪些空间是可以释放的&#xff0c;我的C:\分配了10G的空间&#xff0c;一度又一度的空间紧张&#xff0c;大家的系统盘是多大呢&#xff1f;这一次我准备向 C:\WINDO…

[译]如何在visual studio中调试Javascript

本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?vPMsVM7rjupU&listPL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b 本次的视频我们讨论如何在Visual Studio中调试Javascript 步骤如下: 1.在Visual Studio中,右键点击一个网…

springboot出现org.springframework.beans.factory.NoSuchBeanDefinitionException问题

报错 with path [] threw exception [Request processing failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type org.springframework.transaction.TransactionManager available] with root causeorg.…

web.py端口被占用的错误

运行文件Python code.py 文件里用到import web出现 Traceback (most recent call last): File "code.py", line 14, in <module> app.run() File "/usr/local/lib/python2.7/dist-packages/web/application.py", line 313, in run return wsgi.runws…

对VS2008生成智能win32程序简单理解

程序中创建了主窗口&#xff0c;所以它必须为主窗口注册一个窗口类&#xff0c;创建窗口并且提供一个消息循环来为窗口处理消息。 注册窗口类 ATOM MyRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass) { WNDCLASS wc; wc.style CS_HREDRAW | CS_VREDRAW; wc.lpfnWnd…

java在读取excel时出现Unable to recognize OLE stream错误解决方法

报错截图如下 这个问题是因为你的excel版本不对&#xff0c;要把.xlsx后缀另存为.xls后缀 {"type": "error","message": "数据导入出错&#xff01;Unable to recognize OLE stream出错行&#xff1a;1,异常流水号:1724238","co…

测试工作中常用的方法

测试工作中经常会用到如下相关方法&#xff0c;主要包括PDCA、SWOT、6W2H、SMART、2/8法则、WBS任务分解法、时间管理。 PDCA循环法则 Plan&#xff1a;制定工作目标和工作计划 Do&#xff1a;按照计划执行任务 Check&#xff1a;检查执行过程中的关键点和最终结果 Action&…

git pull 时报错 Untracked Files Prevent Pull

untrack表示是新文件&#xff0c;没有被add过&#xff0c;是为跟踪的意思 可以看看有哪些文件会被删除&#xff0c;但是不会真正执行 git clean -n 删除当前目录下所有没有track过的文件. 他不会删除.gitignore文件里面指定的文件夹和文件, 不管这些文件有没有被track过 在…

测试邮件系统需要做的准备工作

大部分企业在搭建邮件系统时&#xff0c;基本上都会对市场上的邮件主流产品进行测试。软件这一类型的产品在购买前一般都要经过客户测试这个环节&#xff0c;否则很难保证其实用性和适用性。邮件系统或者叫邮件服务器&#xff0c;这类企业信息沟通的软件也不例外&#xff0c;Tu…

17.10.05

上午 模拟考试 Prob.1&#xff08;AC&#xff09;一道简单的博弈题&#xff0c;找到必胜态&#xff0c;反推普遍情况是否可以达到必胜态即可。Prob.2&#xff08;AC&#xff09;做到原题了呢。入门OJ 2092: [Noip模拟题]舞会Prob.3&#xff08;WA了3个点&#xff09;一道高精度…

Mysql之CURDATE()函数,NOW()函数,CURTIME()函数

可以看到CURDATE() 取的是年月日&#xff0c;CURTIME()取的是时分秒, NOW()取的是年月日时分秒 NOW()取的是年月日时分秒SELECTNOW();可以看到CURDATE() 取的是年月日 SELECTCURDATE();CURTIME()取的是时分秒, SELECTCURTIME();

MS SqlServer中少用但是好用的SQL语句

代码 /*-- 2010-02-26 -- 布朗-- QQ:156298979*/--with ties可以附加与排序字段相同值的多个行selecttop3withties *fromhrEmployee orderbyshortName ascsetrowcount3--设置全局变量,使每次返回的行数都为3行select*fromhrEmployee orderbyshortName ascsetrowcount0--设置全局…

解题报告:51nod 加农炮

2017-10-07 16:15:16 writer&#xff1b;pprp 题目来源&#xff1a; Codility基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB 分值: 40 难度&#xff1a;4级算法题一个长度为M的正整数数组A&#xff0c;表示从左向右的地形高度。测试一种加农炮&#xff0c;炮弹平…

仅用 []()+! 就足以实现几乎任意Javascript代码

G Reader里Dexter同学的分享&#xff0c;来自sla.ckers.org的又一神作 点我测试 GReader里看不到效果的同学请自行测试下列HTML&#xff1a;<script language"javascript" type"text/javascript">([][(![][])[![]![]![]](!![][][(![][])[[]]([![]][]…

mysqldump普通账号Got error: 1044

[rootSHCTC-GAME5-151 release1]# mysqldump -h10.10.4.51 -u user -p password db_name >/tmp/db.sqlmysqldump: Got error: 1044: Access denied for user user10.%.%.% to database db_name when using LOCK TABLESmysql使用普通用户备份出现&#xff1a;[rootxok.la]# m…

HTML第四章

第四章 初识CSS 1.什么是CSS&#xff1a; CSS全称&#xff08;Cascading Style Sheet&#xff09;风格样式表(Style Sheet)它是用来进行网页风格设计的。 2.CSS的优势&#xff1a; &#xff08;1&#xff09;内容与表现分离&#xff0c;也就是使用前面学习的HTML语言制作网页&a…

javascript :得到上星期的这一天日期

javascript :得到上星期的这一天日期 这个问题在项目中很常见呢,一般的查询都会有一些默认要求,比如日期在一个星期内.那么,怎么设置默认值.看起来很简单的一个问题,其实很容易走进误区.但extjs里有很好的实现,在util目录下的Date.js文件里.可以看一看,写得非常好.这里有一个简…

简单实现顶部固定,中部自适应布局

最近在重构web导航的时候就发现一个问题&#xff0c;如何实现顶部固定&#xff0c;中部自适应的布局。 很多人会认为这很简单啊&#xff0c;顶部使用position: fixed;就可以实现。 <!DOCTYPE html> <html lang"zh"><head><meta charset"UT…

mysql查询当年年份

DATE_FORMAT(CURRENT_DATE,%Y)