Python 学习笔记(十三)Python函数(二)

参数和变量

1 >>> def foo(a,b):  #函数是一个对象
2     return a+b
3
4 >>> p =foo #对象赋值语句。将foo函数赋值给p这个变量
5 >>> foo(4,5)
6 9
7 >>> p(4,5) 变量p就指向了foo这个函数
8 9
9 >>> 

 按引用传递参数

  按照顺序进行赋值,函数中的变量a就指向了x,x是第一个实参,a这个参数指向了x所引用的对象,并不是把3这个数复制一个放到函数中,这种调用对象的方式,称之为按引用传递。

 1 >>> x,y=3,4 #x,y两个变量分别指向了3和4
 2 >>> foo(x,y) #函数中有两个参数a和b
 3 7
 4 >>> def bar(x):
 5     x =1
 8 >>> m = 9
 9 >>> bar(m)
10 >>> m
11 9
12 >>> 

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

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

  全局变量和局部变量

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

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

 1 >>> x =2  #全局变量
 2 >>> def foo():
 3     x =9     #局部变量
 4     print "this x is the fun:",x
 5
 6
 7 >>> foo()
 8 this x is the fun: 9
 9 >>> x
10 2  函数中的x 与函数外面的x,是不一样的。我们把像x=9这样的x,作用于某个函数体范围内的,称之为局部变量。
11 >>> def bar():
12     global x #在函数体中声明全局变量
13     x =9
14     print "this x is the fun:",x
15
16
17 >>> x
18 2
19 >>> bar()
20 this x is the fun: 9
21 >>> x
22 9
23 >>> 

命名空间:命名空间是对作用域的一种特殊抽象

参数收集和传值

收集方式1:*args

  * args 是以元组的形式接收参数

 1 >>> def foo(*arg):
 2     print arg
 3
 4
 5 >>> foo(1,2,3)
 6 (1, 2, 3)     #元组形式接收参数
 7 >>> foo("baidu","ali","qq","weixin")
 8 (‘baidu‘, ‘ali‘, ‘qq‘, ‘weixin‘)
 9 >>> foo("web",[1,2,3,"pythom"])
10 (‘web‘, [1, 2, 3, ‘pythom‘])
11 >>> def foo(x,*arg):
12     print "x:",x
13     print "arg:",arg
14
15
16 >>> foo(1,2,3)
17 x: 1
18 arg: (2, 3)
19 >>> foo(7)
20 x: 7
21 arg: ()
22 >>> 

收集方式2:**kargs 是以字典形式接收参数

 1 >>> def foo(**karg):
 2     print karg
 3
 4
 5 >>> foo(a=1,b=2,c=3)
 6 {‘a‘: 1, ‘c‘: 3, ‘b‘: 2}
 7 >>> def foo(x,*arg,**karg):
 8     print x
 9     print arg
10     print karg
11
12
13 >>> foo(1)
14 1
15 ()
16 {}
17 >>> foo(1,2)
18 1
19 (2,)
20 {}
21 >>> foo(1,2,3)
22 1
23 (2, 3)
24 {}
25 >>> foo(1,2,3,name="python")
26 1
27 (2, 3)
28 {‘name‘: ‘python‘}
29 >>> 
>>> def book(author,name):
    print "{0} has a book :{1}".format(author,name)

>>> bars={"name":"learn python with cc","author":"cc"}
>>> book(**bars)
cc has a book :learn python with cc
>>> 

特殊函数

zip() 补充

 1 >>> colors =["red","green","blue"]
 2 >>> values=[234,12,89,65]
 3 >>> zip(colors,values)
 4 [(‘red‘, 234), (‘green‘, 12), (‘blue‘, 89)]
 5 >>> dots=[(1,2),(3,4),(5,6)]
 6 >>> x,y=zip(*dots)
 7 >>> x
 8 (1, 3, 5)
 9 >>> y
10 (2, 4, 6)
11 >>> seq =range(1,10)
12 >>> zip(*[iter(seq)]*3)
13 [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
14 >>> x =iter(range(1,10))
15 >>> x
16 <listiterator object at 0x0000000003E8F860>
17 >>> list(x)
18 [1, 2, 3, 4, 5, 6, 7, 8, 9]
19 >>> zip(x,x,x)
20 []
21 >>> x=iter(range(1,10))
22 >>> zip(x,x,x)
23 [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
24 >>> 

lambda  lambda x: x+y lambda 变量: 表达式

map、reduce、filter

 1 >>> def foo(x):
 2     x+-3
 3     return x
 4
 5 >>> foo(4)
 6 4
 7 >>> n =range(10)
 8 >>> n
 9 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
10 >>> [i+3 for i in n ]
11 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
12 >>> lam =lambda x:x+3
13 >>> n2=[]
14 >>> for i in n
15 SyntaxError: invalid syntax
16 >>> for i in n:
17     n2.append(lam(i))
18
19
20 >>> n2
21 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
22 >>> g =lambda x,y:x+y
23 >>> g(3,4)
24 7
25 >>> lambda x:x+4
26 <function <lambda> at 0x0000000003E91438>
27 >>> n
28 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
29 >>> map(foo,n)
30 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
31 >>> map(lambda x:x+3,n)
32 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
33 >>> lst1 =[1,2,3,4,5]
34 >>> lst2=[6,7,8,9,0]
35 >>> map(lambda x,y:x+y,lst1,lst2)
36 [7, 9, 11, 13, 5]
37 >>> reduce(lambda x,y:x+y,lst1)
38 15
39 >>> n =range(-5,5)
40 >>> n
41 [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]
42 >>> filter(lambda x:x>0,n)
43 [1, 2, 3, 4]
44 >>> [x for x in n if x>0]
45 [1, 2, 3, 4]
46 >>> 

原文地址:https://www.cnblogs.com/wangruihua-521/p/8566895.html

时间: 2024-11-09 08:43:22

Python 学习笔记(十三)Python函数(二)的相关文章

python学习笔记(03):函数

默认参数值:   只有在行参表末尾的哪些参数可以有默认参数值,即 def func(a, b=5 )#有效的 def func( a=5,b )#无效的 关键参数: #!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100) #输出: $ pyth

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

python 学习笔记 7 -- Python关键字总结

0.写在前面的话 学习一门语言最重要的功课是练习与复习,在<笨方法学Python>中第三十七节虽然没有教你任何内容,但是它提醒我们:"学了这么多,你还能记得多少?该复习了!" 下面我们就对这一节的第一部分"关键字"来做个复习: Python中的关键字包括如下: and       del        from      not      while    as        elif       global    or       with     

Python学习笔记010——匿名函数lambda

1 语法 my_lambda = lambda arg1, arg2 : arg1 + arg2 + 1 arg1.arg2:参数 arg1 + arg2 + 1 :表达式 2 描述 匿名函数不需要return来返回值,表达式本身结果就是返回值. lambda 仅简洁了代码,并不会提高程序运行效率 如果可以用 for...in...if 来完成的,最好不使用匿名函数lambda 使用lambda时,函数内不要包含循环.嵌套:如果存在,则最好使用def函数来完成,这样的代码可读性和复用性均较高 l

Linux下Python学习笔记 3:函数

一.什么是函数 函数简单来理解就是数字按一定规律重复出现的规则,我们知道圆的面积计算公式为:S = πr²,当我们知道半径r的值时,就可以根据公式计算出面积.在编程中函数被进一步封装成了方法,接收外部传入的参数来带入规则,继而返回相应的结果.那方法的封装其实是一种抽象的结果. 抽象是数学中非常常见的概念.举个例子: 计算数列的和,比如:1 + 2 + 3 + ... + 100,写起来十分不方便,于是数学家发明了求和符号∑,可以把1 + 2 + 3 + ... + 100记作: 100 ∑n n

Python学习笔记七:函数

1. 定义一个函数 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数.参数值和参数名称是按函数声明中定义的的顺序匹配起来的. 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明. 函数内容以冒号起始,并且缩进. Return[expression]结束函数,选择性地返回一个值给调用方.不带表达式的return相当于返回 None. 1 def functionname( parameters ): 2 "函数_文档字符串" 3 function_suite

Python学习笔记4(函数与模块)

1.Python程序的结构 Python的程序由包(package).模块(module)和函数组成. 模块是处理一类问题的集合,由函数和类组成. 包是由一系列模块组成的集合.包是一个完成特定任务的工具箱. 2.函数 2.1函数的定义 def sayHello(): print 'Hello World!' # block belonging to the function sayHello() 2.2函数的参数Python中任何东西都是对象,所以参数只支持引用传递的方式.Python通过名称绑

python学习笔记——高阶函数map()

满足以下两点中任意一点,即为高阶函数: 1.函数接收一个或多个函数作为参数 2.函数返回一个函数 1 描述 用函数和可迭代对象中每一个元素作为参数,计算出新的迭代对象 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. 2 语法 map(function, sequence[, sequence, ...]) function:函数 sequence:一个或多个序

python学习笔记(一):python简介和入门

最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型的计算机语言,它的特点是语法简洁.优雅.简单易学.在1989诞生,Guido(龟叔)开发.这里的python并不是蟒蛇的意思,而是龟叔非常喜欢一部叫做<Monty Python飞行马戏团>的电视剧,所以以python命名(老外就是这么任性).二.解释型语言和编译型语言编译型语言就是先把写好的程序翻

python学习笔记(python发展介绍)

一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交易,金融分析等,作为动态语言的python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛 ·图形GUI python是一门什么样的语言? 编程语言主要从以下几个角度进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言. 编译型和解释型 编译型,如:c,c++,