您的位置:首页 > 编程语言 > Python开发

python函数学习笔记

2018-03-06 10:29 387 查看
1,函数名赋值给变量

def func(x):
return x

f=func      #把函数名赋值给变量

print(f(1)) #用变量调用这个函数


再来个PHP的

<?php
function func($x){

echo $x;
}

$f='func';
$f(1);
?>


效果一样

2,函数多个默认参数的设置

def func(x,y='y',z='z'):
return x+y+z

print(func('a',z='c')) #跳过y参数直接设置z参数,输出ayc


php 的

function func($x,$y='y',$z='z'){

echo $x.$y.$z;
}

func('a',$z='c');
//输出acz 而不是想要的ayc,证明php参数必须顺序对应,即使func('a',$b='b',$c='c')这样,依旧按照顺序输出:abc,这点php解释器做的不怎么样,差评


3,python 函数返回多个值,这点php是做不到的,php 只能返回一个

def func(name,age=19):

return name,age

print(func('lianf'))
#输出('lianf', 19),其实是tuple 类型的一个不可变列表


可变的参数

def func(name,*km):

return name,km

print(func('lianf',1,2,3,4,6))
#输出('lianf', (1, 2, 3, 4, 6)),可变的部分是一个tuple,可以用for x in km 循环出来如下:
def func(name,*km):

s=name+":"
for x in km:
s=s+x
return s

print(func('lianf',"a","b","c"))
#输出 lianf:abc,灵活,牛逼,慢慢喜欢上了这个语言


4,关键字(key)参数,这个也很牛逼,可以传不定长的字典dic也就是java 里的map (key-values )键值对作为参数

def func(name,**km):

return name,km

print(func('liangf',a=1,b="bb"))
#输出('liangf', {'a': 1, 'b': 'bb'}),注意{} 注意这个大括号牛逼!!!


命名关键字参数

def func(name,*,b,c):

return name,b,c

print(func('lianf',b=1,c='a'))
#输出('lianf', 1, 'a')


在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

def func(name,age=18,*a,b,c,**k):

return name,age,a,b,c,k

print(func('lianf',1,2,3,b=1,c='a',n='n',m='m'))
#输出:('lianf', 1, (2, 3), 1, 'a', {'n': 'n', 'm': 'm'})


*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。

以及调用函数时如何传入可变参数和关键字参数的语法:

可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过args传入:func((1, 2, 3));

关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过kw传入:func({‘a’: 1, ‘b’: 2})。

使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。

定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python php 函数