函数的定义


def 函数名(参数):


函数主题句


def的意思相当于define 如果函数直接print,一定要在后面加上个()(如果直接输出必须有return)。


个人学到这里就感觉Python要比C++写起来方便的多。


函数的参数:


不止可以加一个


def name(a, b):
 
print "my %s is %s"%(a,b)
 
参数《==》抽象
 
对于抽象多参函数:
 
def nec_name(*num):
 
for i in num:
 
print i
 
 
 
 
这样num就成为了一种元组类型
 
。



参数又分为可选参数和必须的参数:必选参数后面不跟=(没有默认值),可选参数后面跟=(有默认值)



函数的健壮性:


1、你永远知道你的函数返回什么


2、返回你想要的结果


----------------------------------------------------


习题:


1.定义一个方法 func,该func可以引入任意多的整型参数,结果返回其中最大与最小的值。



2.定义一个方法func,该func可以引入任意多的字符串参数,结果返回(长度)最长的字符串。



3.定义一个方法get_doc(module),module参数为该脚本中导入或定义的模块对象,该函数返回module的帮助文档。



例 print get_doc(urllib),则会输出urllib这个模块的帮助文档。



4.定义一个方法get_text(f),f参数为任意一个文件的磁盘路径,该函数返回f文件的内容。



5.定义一个方法get_dir(folder),folder参数为任意一个文件夹,该函数返回folder文件夹的文件列表。提示(可以了解python的glob模块)



#coding=utf-8
 
import glob
 
def Finds(*num):#输出最大值和最小值
 
max = num[0]
 
min = num[0]
 
for i in num:
 
if i >= max:
 
max = i
 
if i <= min:
 
min = i
 
print max,min


def func(*str):#定义一个方法func,该func可以引入任意多的字符串参数,结果返回(长度)最长的字符串。


s = list(str)
 
dic = dict([len(x),x] for x in s)
 
return dic[max(dic)]



def get_help(a):#定义一个方法get_doc(module),module参数为该脚本中导入或定义的模块对象,返回module的帮助文档。


return help(a)
 
 
 
 
def get_text(a):#定义一个方法get_text(f),f参数为任意一个文件的磁盘路径,该函数返回f文件的内容。
 
f = open(a,'r')
 
s = f.read()
 
return s


def get_dir(a):#定义一个方法get_dir(folder),folder参数为任意一个文件夹,该函数返回folder文件夹的文件列表。


dd = "%s/*.*"% a
 
return dd


---------------------------------------------------------------------------------


命名方式:1、下划线命名法 get_doc 2、驼峰命名法 getDocFromTxt


---------------------------------------------------------------------------------


1 定义一个方法get_num(num),num参数是列表类型,判断列表里面的元素为数字类型。其他类型则报错,并且返回一个偶数列表:(注:列表里面的元素为偶数)。



2 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)。



3 定义一个方法 func,该func引入任意多的列表参数,返回所有列表中最大的那个元素。



4 定义一个方法get_dir(f),f参数为任意一个磁盘路径,该函数返回路径下的所有文件夹组成的列表,如果没有文件夹则返回"Not dir"。


----------------------------------


import glob


import urllib
 
def getNum(a):
 
Nlist = []
 
if not isinstance(a,list):
 
return "这不是一个列表类型"
 
for i in a:
 
if not isinstance(i,int):
 
return "这不是一个数字类型"
 
else:
 
if i%2 ==0:
 
Nlist.append(i)
 
 
 
 
return Nlist
 
 
 
 
def getUrl(a,b):
 
f = urllib.urlopen(a)
 
r = open(b,'w+')
 
for lines in f.readlines():
 
r.write(lines)
 
 
 
 

 
def getList(*lists):
 
get_list = []
 
for l in lists:
 
if not isinstance(l,list):


return "里面有至少一个非列表"


else :
 
get_list.append(l)
 
 
 
 
return max(max(get_list))
 
-------------------------------------------------------------


1、函数的作用域问题


如果函数没有运行,那么函数里做出的变量改变是不起作用的


2、lambda


3、关于调用多个结构的问题


元组是* 字典是 **


在引入参数的时候,不同类型的顺序不能颠倒


先是位置匹配的参数,再是关键字匹配的参数,同样关键字匹配的参数的顺序也不能颠倒