Eighth: function的定义及调用

1. 函数由关键字def来做定义

2. 函数内部如果没有返回值,默认返回None

3. 函数接受default参数,The default value is evaluated only once. This makes a difference when the default is a mutable object such as a list, dictionary, or instances of most classes.

4. 函数接受关键字传参数,有一个重要的原则:In a function call, keyword arguments must follow positional arguments.

5. Finally, the least frequently used option is to specify that a function can be called with an arbitrary number of arguments. These arguments will be wrapped up in a tuple.

6. In the same fashion, dictionaries can deliver keyword arguments with the **-operator:

7. function同样支持Lambda Expressions(目前只做了解,不做学习)

# basic function
def fib(n):
    a, b, result = 0, 1, []
    while a < n:
        result.append(a)
        a, b = b, a+b
    return result

print(‘fib(10)=‘,fib(10))

# function with default argument values
def sum(x, y=0):
    return x + y

print(‘sum(2)=‘,sum(2))
print(‘sum(2,5)=‘,sum(2,5))
print(‘sum("2","5")=‘,sum(‘2‘,‘5‘))

# The value of the function name has a type that is recognized by the interpreter as a user-defined function.
# This value can be assigned to another name which can then also be used as a function.
fib_copy = fib
print(‘fib_copy(10)=‘,fib_copy(10))

"""
    function with default argument values
"""
def full_name(first_name=‘Miles‘, middle_name=‘M‘, last_name=‘Yao‘):
    return first_name + ‘ ‘ + middle_name + ‘ ‘ + last_name

print(‘full_name()=‘,full_name())
print(‘full_name("Miles")=‘,full_name(‘Miles‘))
print(‘full_name("Miles","MM")=‘,full_name(‘Miles‘,‘MM‘))

print("full_name(last_name=‘Lee‘, middle_name=‘XX‘)=",full_name(last_name=‘Lee‘, middle_name=‘XX‘))

polulation = 5

def f_population(arg=polulation):
    print(arg)

polulation = 6
# the print value would be 6
f_population()    

def f_list(i, _list=[]):
    _list.append(i)
    return _list

print(‘f_list(1)=‘,f_list(1))
print(‘f_list(2)=‘,f_list(2))
print(‘f_list(3)=‘,f_list(3))

‘‘‘
    Arbitrary Argument Lists
‘‘‘

def concat_a(*args, seperate=‘/‘):
        return seperate.join(args)

print("concat_a(‘hello‘,‘world‘)=",concat_a(‘hello‘,‘world‘))
print("concat_a(‘hello‘,‘world‘, seperate=‘:‘=",concat_a(‘hello‘,‘world‘, seperate=‘:‘))

‘‘‘
    dictionaries can deliver keyword arguments with the **-operator:
‘‘‘

print(‘sum(**{"x":12, "y":15})=‘,sum(**{"x":12, "y":15}))

输出结果:

fib(10)= [0, 1, 1, 2, 3, 5, 8]
sum(2)= 2
sum(2,5)= 7
sum("2","5")= 25
fib_copy(10)= [0, 1, 1, 2, 3, 5, 8]
full_name()= Miles M Yao
full_name("Miles")= Miles M Yao
full_name("Miles","MM")= Miles MM Yao
full_name(last_name=‘Lee‘, middle_name=‘XX‘)= Miles XX Lee
5
f_list(1)= [1]
f_list(2)= [1, 2]
f_list(3)= [1, 2, 3]
concat_a(‘hello‘,‘world‘)= hello/world
concat_a(‘hello‘,‘world‘, seperate=‘:‘= hello:world
sum(**{"x":12, "y":15})= 27

时间: 2024-11-07 09:02:37

Eighth: function的定义及调用的相关文章

普通(实例)方法和实例方法的定义和调用

/** *普通方法和实例方法的定义和调用 */ class ClassName {     public $num = 1;        //实例属性     static $num2 = 2;        //静态属性     //实例方法     function showInfo()     {         echo "实例方法被调用!<br />";         echo "num的值{$this->num}<br>"

shell - 函数、数组定义与调用

#!/bin/bash # returning an array value function arraydblr() { local origarray local newarray local elements local i origarray=(`echo "[email protected]"`) newarrray=(`echo "[email protected]"`) elements=$[ $# -1 ] for((i=0;i<=$eleme

JavaScript作用域、上下文环境、函数对象的定义与调用、匿名函数的定义与调用、闭包

提到闭包总给人很高深的感觉,网上的例子也数不胜数.但是我发现相当一部分并不容易理解.根据我的观察,是因为这些例子把标题中提到的概念糅杂在了一起,往往越看越糊涂.所以我希望化整为零,拆成简单例子来解释. 1.先看作用域: JavaScript作用域只有两种--全局作用域和函数内作用域,没有代码块作用域.示例: function loop(){ for(var i=0;i<5;i++){ //doSomething; } alert(i); } loop(); //执行函数结果为5. 尽管变量i已经

javascript、jQuery函数定义和调用方法

一.javascript 1.var aaa=function(){...} var 方式定义的函数,不能先调用函数,后声明,只能先声明函数,然后调用. 2.function aaa(){...} function方式定义函数可以先调用,后声明. 例子: <script language="JavaScript" type="text/javascript"> //aaa();这样调用就会出错 var aaa = function(){ alert(&q

JS function的定义方法,及function对象的理解。

废话篇: 今天看到了javascript的原型链,各种指向,各种对象有木有,各种晕,各种混淆有木有.兼职是挑战个人脑经急转弯的极限啊.不过,最终这一难题还是被我攻克了,哇咔咔.现在就把这东西记下来,免得到时候又忘了就悲催了.... 正文篇: function的定义方法,及function对象的理解. 在我大js中秉承着一切都是对象的原则,不论是方法还是其他都不例外. 我们在使用java的时候经常要编写方法,这时候其用的关键字是function,而在js中我们在编写函数的时候也是用这个关键字,所以

shell 函数定义和调用

一. 函数定义 语法: [function] functionname[()]{     action;     [return int;] } 说明: 1.可以带function fun()  定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. return后跟数值n(0-255 #!/bin/sh build(){     echo $1, $2;     return $(($1+$2)) } b

函数的定义与调用

博客园首发,转载请注明出处,多谢支持.http://www.cnblogs.com/xuema/ 函数的定义与调用 在TypeScript中定义函数的语法为: function function_name(arg:number,arg1:number,....):return_type{ code 函数要执行的代码; return data; } 其中 function 为声明函数的关键字,functionname 为自定义函数的名字,arg为参数列表,_return_type为该函数的返回值类

JavaScript学习记录day5-函数的定义和调用

JavaScript学习记录day5-函数的定义和调用 [TOC] 1. 定义函数 在JavaScript中,定义函数的方式如下: function abs(x) { if (x >= 0) { return x; } else { return -x; } } 上述abs()函数的定义如下: function指出这是一个函数定义:abs是函数的名称:(x)括号内列出函数的参数,多个参数以,分隔:{ ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句.请注意,函数体内部的语句在

3.4 for实现循环结构 --- 3.6 函数文件的定义与调用

3.4 格式不要括号,最后有end for 循环变量 = 表达式1:表 2:表 3 表1:初值     表2:步长      表3:终值 求圆周率:π/4=1 - 1/3 + 1/5 -1/7+...+(-1)^(n+1)*(1/2*n-1) y = 0; g = -1; n = input('n = ?'); for 1:n g = -g; y = y + g *1/(2 * i - 1); end pai = 4 * y 或者 n = input ('n = ?'); x = 1 : 2 :