摘要

函数的使用

目的

  • 了解函数定义方法
  • 掌握函数参数调用方法
  • 函数变量的类型
  • 函数返回值return的使用

内容

函数定义方法
  • why 为什么使用函数
降低编程难度(大问题化解成小问题)
代码复用(避免重复劳动)
  • who 什么是函数
定义:完成特定功能的一个余剧组,这组语句可以作为一个单位,并且可以取一个函数名;
可以在不同地方执行多次(函数调用)
  • how 函数使用
预定义函数:python自带,可直接使用;
自定义函数;用户自己编写

#定义方法
def  函数名(参数列表): 定义
函数名(参数)  调用

#函数命名:  和变量一样,两个单词组成的函数,下滑线连接

#定义
def fun():
    print("hello world")
#调用
fun()
#判断输入是否为整数的函数
def test_fun():
    sth = raw_input("Please input something:")
#     if sth.isdigit():
#         return "num"
#     else:
#         return "Str"
# print test_fun()
    try:
        if type(int(sth)) == type(1):
            print("{} is int".format(sth))
    except ValueError:
        print("{} is not int".format(sth))

test_fun()


函数的参数
#形式参数,定义函数是里面的参数
#实际参数,在调用函数时里面的参数

def add_fun(x,y):
    print(x + y)
add_fun(2,3)

#比较大小
def max_fun(x,y):
    if x > y:
        print(x)
    else:
        print(y)

#默认参数可以简化函数的调用。设置默认参数时,有几点要注意:
#一是必选参数在前,默认参数在后,否则Python的解释器会报错;
#二当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
def power(x,n=2):
    if not isinstance(n,int):
        raise TypeError('bad type')
    s = 1
    while n > 0:
        s *= x
        n -= 1
    return s

print(power(2))

#定义默认参数要牢记一点:默认参数必须指向不变对象!
#调用几次就输出几个end元素的列表
def add_L(L=[]):
    L.append('end')
    return L
    
#调用几次输出结果都是['END']
def add_End(L=None):
    if L is None:
        L = []
    L.append('END')
    return L
#可变参数
#定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,
def calc_t(*num):
    sum = 0
    for i in num:
        sum = sum + i * i
    return sum
l = (1,2,3,4,5,6)
print(calc_t(1,2,3,4,5))
结果:55
print(calc_t(*l))
结果:91
#关键字参数
#** 定义,接收打的是一个字典
def person(name, age, **kw):
    print 'name:', name, 'age:', age, 'other:', kw
    return

print(person('pedro',22))
#结果:name: pedro age: 22 other: {}

#参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
#所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。
#默认参数一定要用不可变对象,如果是可变对象,运行会有逻辑错误!
#要注意定义可变参数和关键字参数的语法:
#*args是可变参数,args接收的是一个tuple;
#**kw是关键字参数,kw接收的是一个dict。

函数变量
  • 局部变量 函数内部定义的变量。
  • 全局变量:函数内不能对全局变量操作,若调用需要用global调用
x = 'global var'
def fun():
    x = 100
    print(x)
fun()

print(x)
print(locals())

函数返回值
  • 默认返回值 None
  • return 返回任意类型值
  • return 执行后,函数终止
#判断是否是数字字符串
def isNum(s):
    for i in s:
        if i not in '0123456789'
            return False
        return True

总结

  • 掌握函数定义和基本的使用方法
  • 函数各个参数的详情使用方法和总结
  • 全局变量和局部变量的区别
  • 函数返回值return的使用方法

练习

#设计一个函数,统计任意一串字符串中数字字符的个数

def countInt(s):
    count = 0
    for i in s:
        if i.isdigit():
            count += 1
        else:
            continue
    return count
a = countInt("qqw12w")
print(a)

#设计函数,统计任意一串字符串中每个字母的个数,不区分大小写
def countStr(str):
    #空字典村数据
    str_dict = {}
    #写入,key26个字母,value出现个数
    for i in xrange(26):
        str_dict[chr(i + 65)] = 0
        # for k,v in str_dict.iteritems():
        #     print k,v
    #字符串变成大写
    str = str.upper()
    #判断字母个数
    for c in str:
        if ord("A") <= ord(c) <= ord("Z"):
            str_dict[c] += 1
        else:
            continue
            
    # 函数最终返回字典
    return str_dict

打印字典内容

for k,v in countStr("dsdsd").iteritems():
    print k,v

    
#1. 设计一个程序,从终端接收10个数字,并使用自己编写的排序函数,对10个数字排序后输出

def sortList():
    L = []
    for i in xrange(1,11):
        L.append(int(raw_input('Please input {} number:'.format(i))))
    L.sort()
    for i in L:
        print(i)
sortList()

#2. 设计一个函数,接收一个英文单词,从文件中查询该单词的汉语意思并返回
def dictCha(s):
    d = {'you':'你'}
    if s in d:
        return d[s]
    return False
print dictCha('you')

posted on 2018-01-03 07:32  siaspedro  阅读(112)  评论(0编辑  收藏  举报