018:函数:灵活即强大

笔记

1、分清楚形参和实参

2、函数文档:是函数的一部分,于解释不同,使用help(函数名)或者 函数名__doc__可以查看到

3、关键字参数(在一个函数的参数较多的时候作用比较明显):

给参数的名字下定义,例如:

def F(name,words)

如下两种引用的方法是等价的

F(A,B) = F(words=B,name=A)

4、默认参数:函数定义时为形参赋初值,函数调用时若没有传递参数,则自动使用初值

def F(name=C,words=D)

5、收集参数:

def test(*params)

test(1,‘小甲鱼‘,3.14,7,8,9)

测试题

1.函数文档和直接用“#”为函数写注释有什么不同?

论坛参考答案:给函数写文档是为了让别人可以更好的理解你的函数,所以这是一个好习惯.

def MyFirstFunction(name):
    ‘函数文档在函数定义的最开头部分,用不记名字符串表示‘
    print(‘I love FishC.com!‘)

我们看到在函数开头写下的字符串Ta是不会打印出来的,但Ta会作为函数的一部分存储起来,这个我们称之为函数文档字符串,Ta的功能跟注释是一样的。函数的文档字符串可以按如下方式访问:

>>> MyFirstFunction.__doc__
‘函数文档在函数定义的最开头部分,用不记名字符串表示‘

另外,我们用help()来访问这个函数也可以看到这个文档字符串:

>>> help(MyFirstFunction)
Help on function MyFirstFunction in module __main__:
    MyFirstFunction(name)
函数文档在函数定义的最开头部分,用不记名字符串表示

2.使用关键字参数,可以有效避免什么问题的出现呢?

答:关键字参数,是指函数在调用的时候,带上参数的名字去指定具体调用的是哪个参数,从而可以不用按照参数的顺序调用函数,例如:

>>> def SaySome(name, words):
        print(name + ‘->‘ + words)
>>> SaySome(words=‘让编程改变世界!‘, name=‘小甲鱼‘)

3.编写一个符合以下要求的函数:

a) 计算打印所有参数的和乘以基数(base=3)的结果

b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。

def Sum(*params,base=3):
    result = 0
    for i in params:
        result += i
    if 5 not in params:
        return result*base
    else:
        return result*base - 5*3

原文地址:https://www.cnblogs.com/superrrrjia/p/8372895.html

时间: 2024-08-29 11:05:24

018:函数:灵活即强大的相关文章

第018讲:函数 灵活即强大(课后测试题及答案 )

1.形参和实参 函数从调用的角度来说,分为形式参数和实际 参数.形参是指函数创建和定义过程中小括号里的参数:而实参指得是函数在被调用过程中传递进来的参数.如下所示 >>> def MyFirstFunction(name): '函数定义过程中的name是叫形参' #因为Ta只是一个形式,表示占据一个参数位置 print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值!') >>> MyFirstFunction('小甲鱼') 传递进来的小甲鱼叫做实

第 018讲:函数:灵活即强大

数: 0.形参和实参: >>> def saysomething(name, words): \\name是形参: Jenny是实参 print(name + '->' + words) >>> saysomething("jenny", "happy")jenny->heppy 1.关键字函数: >>> def saysomething(name, words): print(name + '-&g

[Erlang_Question28]使用匿名函数灵活组合不同的case

cowboy_http.erl里面的date1/2 启示: 以前一般写case里都是这样子: 1 date1(Date) -> 2 case month1(Date) of 3 {error,badarg} -> 4 {error,badarg}; 5 {ok,MonthData} -> 6 case timer1(MonthData) of 7 {error,badarg} -> 8 {error,badarg}; 9 {ok,TimerData} -> 10 valid_

推荐一个强大和灵活的处理XML的开源框架---GenXDM

GenXDM是非常著名的中间件软件厂商TIBCO公司贡献一个出来XML的一个非常灵活和强大的开源框架(基于Apache的License),其提供了一套机制和接口,把所有的DOM的操作和解析模型通过一种统一的方式来实现.因此,GenXDM框架本身提供了AxiomProcessingContext,DomProcessingContext和XmlNodeContext的一套处理机制.其实GenXDM本身只是一个壳子,必选由相应的Axiom,Dom或者XmlNode的配合起来,才能进行XML文件的cr

sscanf函数——强大的C语言库函数

这个函数真的很强大,这篇随笔也将一直更新一些总结,直到涵盖大多数应用: eg1: 今天公司项目中从云端获取了一段字符串---"+CBC: 0,90,4090" 我想获取其中的数字0,90,4090.我们当然可以写一个函数,判断,并且逐一取值,然后再糅合成想要的数据,但是这样也真的太麻烦了,于是sscanf就来了. #include<stdio.h> int main(void) { int a; int b; int c; char *s="+CBC: 0,90,

代码生成利器:IDEA 强大的 Live Templates

Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量, logger 或者 bean 等等.对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates 功能.刚开始觉得它只是一个简单的 Code Snippet ,后来发现它支持变量函数配置,可以支持很复杂的代码生成.下面我来介绍一下 Live Templates 的用法. 基本使用 IDEA 自带很多常用的动态模板,在 Java 代码中输入 fori ,回车就会出现 for (int i = 0;

transformjs污染了DOM?是你不了解它的强大

Transform(element); var tween = new TWEEN.Tween({ translateX: element.translateX, translateY: element.translateY }) .to({ translateX: 100, translateY: 100 }, 1000) .onUpdate(function () { element.translateX = this.translateX element.translateY = this

Golang泛型函数

目前,golang还不支持模板函数(类型参数化),所以看上去不得不为每一种类型都实现一个函数.但是Golang可以利用空接口interface{}和闭包/高阶函数来实现泛型函数. 1 空接口 空接口interface{}是指方法集为空的接口,任何类型的值都可以赋值给空接口.接口相关内容请参见另一篇博客<Golang中的接口> // interface{} func minimum(first interface{}, rest ...interface{}) interface{} {    

JS中,子类调用超类函数

概述 JS虽然并不直接具备面向对象的特性,但仍可以通过prototype来模拟面向对象的继承和多态等特性.和大多数面向对象语言(例如C++,Java等)相比,JS来实现面向对象仍稍显繁琐和抽象,需要对JS的prototype模型有深入的理解. 在开发过程中,有时候会遇到这样一个问题:如果在子类中"覆盖"了超类的某个方法,但仍需要在子类方法中调用一次超类方法,这时候应该怎么做?如果是Java,一个简单的super关键字即可解决问题,但如果是JS呢? 解决问题的最基本方法可以是:在子类中,