设为首页 收藏本站
查看: 1754|回复: 0

[经验分享] Python笔记——函数及模块

[复制链接]

尚未签到

发表于 2017-4-27 07:09:02 | 显示全部楼层 |阅读模式
转载请注明出处:http://blog.csdn.net/wklken/archive/2011/04/10/6312862.aspx



Python笔记——函数及模块

一、函数
函数是可重用的程序段
使用def可以声明一个函数,完整的函数由函数名,参数以及函数实现语句组成。

一般形式:
def <函数名> (参数列表):
<函数语句>
return <返回值>

其中参数和返回值非必须
注意,没有返回值的return语句等价于return NoneNonePython中表示没有任何东西的特殊类型。

eg1.
#函数基本定义def hello():print("hello world!python")#带参数的函数def sum(L):result = 0for i in L:result += ireturn result
调用 hello()
调用 sum(l)

函数块中声明变量默认为局部变量
若是想在函数中使用外部声明的变量,使用global关键字

#使用外部定义变量def use_global():global xprint("old x = "+str(x))x = 0print("change to x = "+str(x))x=20use_global()

Ø 函数中的参数:
在声明函数时,可以预先为参数设置一个默认值,在调用时,若不向函数传递参数,使用默认值

形式:
def <函数名> (参数 = 默认值):
<语句>
Eg.mehthodDemo.py
def sum(a=1,b=2,c=3):
return a+b+c

注意,参数传递的方式:
1.顺序传递,如sum(12,3,4)【当提供参数少于函数需要,使用顺序传递,未赋予将查找默认值,无默认报错】
2.参数名传递,sum(c=3,b=1,a=2)

注意: 只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。
#使用默认参数 见后面的调用方式def use_default(a=1,b=2,c=3):return a+b+cprint(use_default()) #不传,使用默认print(use_default(4,5,6) ) #顺序赋值print(use_default(b=4,c=5,a=6) )#乱序,但是指定


Ø 可变长的参数:
具有任意个参数,而不必将所有参数定义
参数开头以*

#使用可变长参数def listappend( *l ):result = []for i in l:result.extend(i)return resultl=[1,2,3,4,5]j=[4,5,6]print(listappend(l,j))

Ø 补充:lambda表达式

特殊的声明函数方式,用于创建新的函数对象,并且在运行时返回它们【返回函数对象】
声明一个匿名函数,简单的函数,返回一个值
用于定义小型的函数,在函数中仅包含单一的参数表达式,而不能包含其他语句,但是可以调用其他函数

格式:
lambda 参数列表:表达式

result = lambda x:x**2
result = lambda x:show(x)*2

#lambda表达式def repeater(n):return lambda s:s*n#调用lambdatwice = repeater(2)#拿到函数,其中n=2,参数为sprint(twice('word'))print(twice(2))#再一个例子fun =lambda x:x*x-1print(fun(2))


二、模块
模块是包含函数和其他语句的python脚本文件,以“.py”为后缀名
模块是包含了自定义函数和变量的文件
python中可以通过导入模块,然后使用模块中的函数或者数据

1、导入模块
格式:
import 模块名
import 模块名 as 别名
from 模块名 import 函数名

使用import导入,调用时,必须 模块名.函数名 调用
使用from导入,调用时,直接 函数名


编写自己的模块:
my.py
其中函数
def show()
print('this is a module!')
value = 'module'

保存
命令号进入该文件夹下[与编写的模块在同一目录下]
import my
my.show()
print my.value

2、设置模块查找路径
上一例子是在同一目录
若不在同一目录,python查找不到,必须进行查找路径的设置,将模块所在的文件夹加入系统查找路径
查看默认查找路径:
import sys
sys.path

添加一个路径[将当前路径加入]
import os
import sys
sys.path.append(os.getcwd())



3__name__属性
每个python脚本在运行时都有一个 __name__属性【前后均为两下划线】
如果脚本独立运行,__name__属性为"__main__"
如果脚本作为模块被导入,则其__name__属性被设为模块名

def show():print('abcd')if __name__ == '__main__':show()print('main print')


dir函数——列出模块定义的标识符,标识符包含函数,类和变量
dir() 默认列出当前模块的属性列表
dir(模块名) 获取导入模块中所有定义的名字,函数等,使用内置函数dir()获取列表

dir([object])
object,可选,要列举的模块名
若是不向其传递,返回当前脚本所有名字列表

注意:使用del可以将一个变量/名称从列表中删除

4、模块包
python中可以用包来管理多个模块
使用python中的模块包可以通过路径导入模块

优点:避免名字冲突,便于包的管理

包可以看作是处于同一目录中的模块,在包的每一个目录中都必须包含一个“__init__.py
该文件可以为空,仅用于表示该目录为一个包
该文件主要用途是设置"__all__"变量以及包含包初始化所需要的代码


格式:
from A.B import a
import A.B.a

最后附上以上程序及运行结果:
# methodDemo.py 函数及模块示例#函数基本定义def hello():print("hello world!python")#带参数的函数def sum(L):result = 0for i in L:def show():print('abcd')if __name__ == '__main__':show()print('main print')result += ireturn result#使用外部定义变量def use_global():global xprint("old x = "+str(x))x = 0print("change to x = "+str(x))#使用默认参数 见后面的调用方式def use_default(a=1,b=2,c=3):return a+b+c#使用可变长参数def listappend( *l ):result = []for i in l:result.extend(i)return result#lambda表达式def repeater(n):return lambda s:s*nhello()l=[1,2,3,4,5]print(sum(l))x=20use_global()print(use_default()) #不传,使用默认print(use_default(4,5,6) ) #顺序赋值print(use_default(b=4,c=5,a=6) )#乱序,但是指定j=[4,5,6]print(listappend(l,j))#调用lambdatwice = repeater(2)#拿到函数,其中n=2,参数为sprint(twice('word'))print(twice(2))#再一个例子fun =lambda x:x*x-1print(fun(2))print(dir())

DSC0000.gif

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-369660-1-1.html 上篇帖子: 用Python做图像处理 下篇帖子: EditPlus中配置python,lua环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表