Python函数解析

  对于Python的函数,我们需要记住的是:

1. 函数的默认返回值是None。

2. python是一个自上而下逐行解释并执行的语言。因此,函数的定义必须在函数被调用之前。同名的函数,后定义的会覆盖前面定义的。

3. 程序执行的时候,遇到函数定义只会先将函数整体读进内存,并不立刻执行。等到函数被调用的时候才执行函数体。

4. python函数的参数传递的是一个引用而不是值。这点很重要。这一点可以用下面的例子证明:

def f1(a_list):
    s = id(a_list)
    a_list[0] = 5
    print(s)
    print(a_list)

li = [1,2,3,4,]
f1(li)
print(id(li))
print(li)

运行结果:

11797576
[5, 2, 3, 4]
11797576
[5, 2, 3, 4]

  对于函数,最重要的知识点莫过于参数了。Python中的参数有以下几种:

一、普通参数:

  也叫位置参数,它们在参数列表中的位置固定,集体排在最左边,必须根据其顺序进行参数传递。例如:

def f1(a,b,c):
    print(a,b,c)

f1(1,2,3)

  对于每个参数,在函数引用时,我们可以指定参数,这是一种参数的传值方法。使用这种方式的时候,参数可以不按顺序,但它必须位于参数序列的最后部分。例如:

def f1(a,b,c):
    print(a,b,c)

f1(1,c=3,b=2)

  但这样不行:

def f1(a,b,c):
    print(a,b,c)

f1(c=3,1,b=2)

二、默认参数:

  默认参数是为某些参数设定一个默认值,既可以减少参数传入量,也可以享受使用默认值的便利。默认参数必须位于参数列表的最后部分!例如:

def f1(a,b,c=3):
    print(a,b,c)

f1(1,2)

  上面的例子也可以这么引用:f1(1,2,4),这时我们指定了c的值为4,而不使用默认值。

  但在混合使用普通参数和默认参数的时候要注意一个问题,下面这个例子,a、b为普通参数,c、d为默认参数。我们希望c使用默认值,但是d另外指定值。正确的做法是:

def f1(a,b,c=3,d=4):
    print(a,b,c,d)

f1(1,2,d=8)

  此处要明确的使用“d=8”的传递形式。如f1(1,2,,8),f1(1,2,8)之类的方式都不行。

三、动态参数

  Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号,而不是args和kwargs,实际上你可以使用*any或**whatever的方式,但就如self一样,潜规则我们使用*args和**kwargs。

时间: 2024-10-27 09:52:15

Python函数解析的相关文章

python列表里__setslices__方法函数解析a

先看看列表里的__setslice__方法函数的帮助文档 help(list.__setslice__) 帮助文档如下所示: __setslice__(...) x.__setslice__(i, j, y) <==> x[i:j]=y Use of negative indices is not supported. 从帮助文档可以看出这个方法函数可以通过列表切片的方式来使用(运算映射函数).举例说明一下: In [1]: li = range(1, 11) In [2]: li Out[2

Python urllib urlretrieve函数解析

Python urllib urlretrieve函数解析 利用urllib.request.urlretrieve函数下载文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Urlretrieve函数解析 urllib.request.urlretrieve函数解析 urlretrieve(url, filename=None, reporthook=None, data=None) 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

Python 五、Python函数

一.函数概述 1.函数的基础概念 函数是python为了代码最大程度地重用和最小化代码冗余而提供的基础程序结构. 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件 函数用于将相关功能打包并参数化 在python中可以创建4种函数: 全局函数:定义在模块中 局部函数:嵌套于其它函数中 lambda(匿名)函数:仅是一个表达式 方法:与特定数据类型关联的函数,并且只能与数据类型关联一起使用 函数和过程的联系:每个Python函数都有一个返回值,默认为None,也可以使用"return

Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例

由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二部分将第一部分的示例进行扩展,展示了如何在python中调用多线程的C模块:第三部分扩展了第二部分,增加了在C模块的线程中回调python的演示. 本文所用的环境为:64位Win7 + python 3.4 x86 + vs2010 一.windows下的C语言多线程程序 windows下多线程编程

[转]Python函数的各种参数用法(含星号参数)

Python中函数的参数有4种形式,分别是: 位置或关键字参数(Positional-or-keyword parameter) 仅位置的参数(Positional-only parameter) 任意数量的位置参数(var-positional parameter) 任意数量的关键字参数(var-keyword parameter) 第一种:位置或关键字参数 这种参数是Python中默认的参数类型,定义这种参数后,可以通过位置参数,或者关键字参数的形式传递参数: ## 位置或者关键字参数 ##

python函数:迭代器和生成器

python函数:迭代器和生成器 迭代器和生成器是函数中的一大重点,务必掌握,何为迭代?何为迭代器? 预习: 处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕(使用生成器) 一.迭代器 for i in 50:     print(i) #运行结果: # Traceback (most recent call last): #   File "G:/python/python代码/八月/day2 迭代器生成器/3迭代器.py", line 8, in &

【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

Python网页解析

续上篇文章,网页抓取到手之后就是解析网页了. 在Python中解析网页的库不少,我最开始使用的是BeautifulSoup,貌似这个也是Python中最知名的HTML解析库.它主要的特点就是容错性很好,能很好地处理实际生活中各种乱七八糟的网页,而且它的API也相当灵活而且丰富. 但是我在自己的正文提取项目中,逐渐无法忍受BeautifulSoup了,主要是因为下面几个原因: 由于BeautifulSoup 3(当前的版本)依赖于Python内建的sgmllib.py,而sgmllib.py有好些