python 文档字符串 关键字参数 默认参数 传递函数和lambda函数

本文主要是介绍python 文档字符串 关键字参数 默认参数 传递函数和lambda函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1》首先,看一个例子:

自定义一个函数 isPrime( ) 来判断一个整数是否是素数,然后通过 for 循环,不断的调用 isPrime( ) 函数,找出1~100间的所有素数。

python2 代码如下:

from math import sqrt
def isPrime(x):
    "Judge whether an positive integer is a prime number"
    if x==1:
        return False
    k=int(sqrt(x))
    for j in range(2,k+1):
        if x%j==0:
            return False
    else:
        return True


isPrime()函数也可以写成下面的形式(与上面的定义仅仅相差一条语句):

def isPrime(x):
    "Judge whether an positive integer is a prime number"
    if x==1:
        return False
    k=int(sqrt(x))
    for j in range(2,k+1):
        if x%j==0:
            return False
    return True


#通过for循环,不断的调用isPrime()函数,找1~100间的素数
for i in range(1,101):
    if isPrime(i):
        print i,

运行程序结果如下:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

上面,我们自定义了isPrime()函数,函数体中的第一行称为 文档字符串,使用文档字符串可以为我们的模块,类,函数添加说明性文字,使程序易读易懂。

如何查看一个函数中的文档字符串呢?如下:

>>> isPrime.__doc__
'Judge whether an positive integer is a prime number'

函数定义后,使用该函数的时候,需要进行函数调用,调用函数的方式如下:

functionName(parameter1,parameter2,……)
小括号是必须的,即使没有参数,小括号也不能省略。

2》默认参数

函数的参数可以有默认值,在函数的定义中,默认参数以赋值语句的形式提供,如下:

例子1:

def f(x=True):
    if x:
        print 'x is a correct word!'
    print 'OK!'

>>> f() #调用时没有给出参数,使用默认值
x is a correct word!
OK!
>>> f(False) #调用时给出参数,使用该参数
OK!

例子2:

def f(x,y=True):

    if y:
        print x,'and y are both correct!'
    print x,'is Ok!'

>>> f(68) # y使用默认值
68 and y are both correct!
68 is Ok!
>>> f(68,False) # y不使用默认值,取值False
68 is Ok!

例子3:

def f(y=True,x):
    if y:
        print x,'and y are both correct!'
    print x,'is Ok!'

函数定义成这样,会报错,错误信息如下:
SyntaxError: non-default argument follows default argument

综上,定义函数时,如果有默认参数,则默认参数必须放在参数列表的最后。

3》关键字参数

关键字参数设计的目的是让调用者通过使用参数名区分参数,允许改变参数列表中参数的顺序。

例子1:

def f(x,y):
    if y:
        print x,'and y are both correct!'
    print x,'is Ok!'

>>> f(68,False)
68 is Ok!
>>> f(y=False,x=68)
68 is Ok!

>>> f(68,y=False)

68 is Ok!
>>> f(y=False,68)
  File "<stdin>", line 1
SyntaxError: non-keyword arg after keyword arg
>>> f(x=68,false)
  File "<stdin>", line 1
SyntaxError: non-keyword arg after keyword arg

例子2:

def f(x,y,z,m,n):
    if y:
        print x,'and y are both correct!'
    print x,'is Ok!'
    print z,'is OK!'
    print m,'is OK!'
    print n,'is OK!'

>>> f(68,False,m=2,n=3,z=1)
68 is Ok!
1 is OK!
2 is OK!
3 is OK!


综上,使用关键字参数,不用考虑参数的顺序,但必须放在参数列表的最后。关键字参数的使用,把整个参数表打乱了,一旦它开始了以后,

就必须要把它之后的所有的参数名都写下来

4》传递函数:把函数名当做一个普通参数传给另外一个函数

例子:

def addMeToMe(x):
    return x+x
def self(f,y): #第一个参数是函数名
    print f(y)

>>> self(addMeToMe,4.4)
8.8

5》lambda函数

先看一个例子:

定义一个普通函数:

def my_add(x,y):
    return x+y

>>> my_add(3,4)
7

定义一个lambda函数:

my_add=lambda x,y:x+y

>>> my_add(2,3)
5

我们看一张图:


通过上图,可以看出,定义lambda函数的过程,,如下:

首先,我们用定义普通函数的方法,定义一个函数my_add()
lambda函数怎么写的呢?
首先把原来的函数名改成lambda,后面接着是原先的参数列表,再跟着冒号,
最后一项是return后面的表达式。
最后,把这样的一个lambda函数的调用赋给变量(其实就是一个函数名)
然后,跟普通的函数一样进行调用即可。

综上,lambda函数没有return,更符合数学中函数的使用习惯,它不像普通函数那样,需要有一个定义函数的过程,因此,更加精简。

它还有一个非常吸引人的地方是lambda函数是匿名函数,它不需要取函数名。

上述这些,可以减轻我们的负担。另外,lambda函数跟函数式编程里面的filter(),reduce()等等这些函数,结合起来使用也是非常方便的。

(完)





这篇关于python 文档字符串 关键字参数 默认参数 传递函数和lambda函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/769874

相关文章

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当