函数定义以及参数

一、什么叫函数
1.函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给他取一个名字。
可以通过函数名在程序的不同地方多次执行。(函数调用)
函数分为预定义函数和自定义函数。
预定义函数可以直接使用。 自定义函数需要,是用户自己编写。
2.为什么要使用函数?
(1)降低编程的难度。
通常将一个复杂的大问题分解成一系列的小问题,然后将小问题划分成更小的问题,当问题细化为足够简单时,我们就可以分而治之。各个小问题解决了,大问题就迎刃而解了。
(2)代码重用
避免重复劳作,提高效率。
二、定义函数
1.函数的定义和调用
def 函数名([参数列表]): //定义函数
函数名([参数列表]) //调用函数
函数名的命令也有规则,和变量一样
1.只能是一个词。
2.只能包含字母、数字、和下划线。
3.不能以数字开头。
4.不可以使用关键字。
如果是多个单词,第二个单词首字母大写。
def fun():
print('hello world')

定义一个函数,判断用户是否输入的是数字
def fun():
sth = raw_input("please input a number: ")
try:
if type(int(sth)) == type(1):
print("%s is a number" %sth)
except:
print("%s is not number" %sth)

fun()

程序思路:
1.如何判断输入的是否是纯数字。可以使用type函数来判断,在用int函数来转换成int型,判断是否是int 整数型。 type(1) 得到的结果就是int
2.try 和 except 这是异常语句。使用了这个可以对报错的代码,也会继续 执行下去而不会报错,不执行后面的代码。
try是捕获异常,在try里的代码执行如果出错后,就会执行在execpt里的代码。
三、函数的参数
1.参数分为形式参数和实际参数
形式参数:在定义函数时,函数名后面括号中的变量名称叫做“形式参数”,或者称为“形参”
实际参数:在调用函数时,函数名后面括号中的变量名称叫做“实际参数”,或者称为“实参”
def fun(x, y):
if x > y:
print x
else:
print y
这x , y 就是形参。执行一下。

fun(5,3) 这就是实际参数。定义了几个形参,就要输入几个实参。
多输入或者少输入都会报错。



在来看一个例子,也是判断是否是数字。
import sys

def isNum(s):
for i in s:
if i in '0123456789':
pass
else:
print("%s is not a number" %s)
sys.exit()
else:
print("%s is a number" %s)
isNum(sys.argv[1])

程序思路:
1.这里用到了sys模块 sys模块中的argv方法。这个方法的作用是,返回一个列表, 里面包含了文件名,和参数。
import sys
print sys.argv
打印一下看看argv返回的东西。

返回的是一个列表,列表的值都是字符串。是列表的话就可以进行切片取数
print sys.argv[1] 取第一个参数,这样结果不管输入了多少个参数都会取第一个参数出来。

我们的判断是否是数字脚本就是通过对这个argv的[1]的值进行判断。
2.使用for 循环来遍历每个数字进行匹配,如果不是数字,直接退出脚本。当整个循环匹配完成后,输出第二个else里的语句。

再来看一个小例子,打印系统所有的pid。从/proc里读取。

import sys
import os
def isNum(s):
for i in s:
if i in '0123456789':
pass
else:
break
else:
print(s)
for i in os.listdir('/proc'):
isNum(i)

程序思路:
1.这里用到了一个OS模块里的listdir()属性方法,这个方法的作用返回列表,列表里的值是目标目录里的所有文件夹。返回的属性是string。
import os
print(os.listdir('/proc')),
打印出了proc文件目录下的所有文件夹。不包括.和 ..文件夹

我们就可以对这个列表做一下判断排除非数字的文件夹。
2.通过for循环来使得i 接收,因为i变量就是上面函数的s参数。s是一个形参,而i是一个实际参数。i 是 os.listdir里的每个参数,i在通过isNum函数来处理一下,判断是否为数字。


四、函数的默认参数
1.函数的默认参数也就是缺省参数。比如
def fun(x, y=100):
print x + y
y参数就是一个默认参数,如果不给y实际参数 y就会从默认参数中读取。
当y有实际参数时,就会替换默认参数。

当函数里的参数只有一个的话,实际参数的值会给x,y为默认值,相加 x + 100
如果函数里有2个实际参数,那么就是这2个实际参数相加
2.还可以这样传参:
fun(x=20,y=30)

但是这样去传参数的话必须对应形参,形参是x 那么实际参数也要x= 。名字要一致。不然会报错。
3.设置2个默认参数
def fun(x=2,y=3):
print x+y

直接执行不带参数可以用默认参数去运行。写了实际参数后,就会代替默认参数。
如果只有一个实际参数的话,会对第一个形式参数去对应。
如果把第一个参数做为默认参数,会报错。提示没有默认参数,默认参数只能是最后,在最后的形参上,不能在最前,中间,一定要在最后。


习题:
1. 设计一个函数,统计任意一串字符串中数字字符的个数
例如:
"adfdfjv1jl;2jlk1j2" 数字个数为3个
def countNum():
    num = raw_input("please input something: ")
    count = 0
    for i in num:
        if i in '1234567890':
            count+=1
    print("{0} 数字个数为{1}个".format(num,count))
countNum()
2. 设计函数,统计任意一串字符串中每个字母的个数,不区分大小写
例如:
"aaabbbcccaae111"
a 5个
b 3个
c 3个
e 1个
import string
def checkAbc_count():
    num = raw_input("please input something: ")
    dict1 = dict()
    num = num.upper()
    for i in xrange(0,len(num)):
       if num[i] in string.ascii_uppercase:
           if dict1.has_key(num[i]) != False:
               dict1[num[i]] += 1
           else:
                dict1[num[i]] = 1
    for k in dict1:
        print("{0} {1}".format(k,dict1[k]))
 
checkAbc_count()



  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值