千家信息网

Python函数及操作

发表于:2024-10-24 作者:千家信息网编辑
千家信息网最后更新 2024年10月24日,博文结构自定义函数变量作用域Python内建函数一.函数Python中的函数都是语句和表达式的集合。函数的用法并没有限制,使用方式就像Python 中其他值一样,对于重复使用的代码,需要编写为自定义函
千家信息网最后更新 2024年10月24日Python函数及操作

博文结构
自定义函数
变量作用域
Python内建函数

一.函数

Python中的函数都是语句和表达式的集合。函数的用法并没有限制,使用方式就像Python 中其他值一样,对于重复使用的代码,需要编写为自定义函数以便于重复使用。

函数可以分为无参函数和带参函数

1.无参函数

自定义无参函数并不复杂,语法格式如下:

                                        def函数名称() :                                                        代码块                                                        return [表达式]

案例:

def add():                    \\定义函数    op1=10    op2=20    rt=op1+op2    print op1,'+',op2,rt    returnadd()                            \\调用函数\\输出结果>>> 10 + 20 30>>> 

案例:输出九九乘法表

def nineMultiTab():    op1=(1,2,3,4,5,6,7,8,9)    op2=(1,2,3,4,5,6,7,8,9)    for i in op1:        for j in op2:            print i,"*",j,"=",i*j    retrunnineMultiTab()\\输出结果>>> 1 * 1 = 11 * 2 = 21 * 3 = 31 * 4 = 41 * 5 = 51 * 6 = 61 * 7 = 71 * 8 = 81 * 9 = 92 * 1 = 22 * 2 = 4..................略

(2)使用函数时经常会犯一-些错误,总结如下

函数的定义要先于函数的调用,否则会出错。
函数体的代码是一个整体,要注意缩进。
定义函数时要使用冒号,但调用时不可以使用冒号。

2.带参参数

带参函数的语法格式如下:

                                                        def函数名称(形式参数列表) :                                                                        代码块                                                                        return[表达式]

案例:

def add(x,y):                  \\带参数函数定义    return x + yprint add(1,2)                  \\带参数函数调用\\输出结果>>> 3

(1)当程序比较烦琐时,参数的顺序很难记住,可以使用关键字参数。关键字参数是在调用函数时,明确指定参数值赋给哪个形参,语法格式如下:

函数名称(形参1=实参1,形参2=实参...)

综合案例:(计算器)

def operator (op1,op2,opFu):    if opFu not in '+-*/':        return -1    if opFu == '+':        result = op1+op2    elif opFu == '-':        result = op1 - op2    elif opFu == '*':        result = op1*op2    elif opFu == '/':        if op2 == 0:            print '错误,除数不能为0'            result = None        else:            result = op1 / op2    return resultdef convert(op):    flag = True    for ch in op:        if ch not in '1234567890':            flag = Flase            brank        if flag == True:            return int(op)        else:            return Noneif __name__== '__main__':     str1 = '请输入第1个数:\n'     strFu = '请输入一个算术运算符:\n'     str2 = '请输入2个数:\n'     while True:        print '需要退出程序,请输入字母q'        opp1 = raw_input(str1)        ch = opp1.strip()[0].lower()        if ch =='q':            break        op1 = convert(opp1)        if op1 ==None:            print '输入错误,请输入整数!/n'            continue        while True:            opFu= raw_input(strFu)            if opFu in '+-*/':              break            else:                print '运算符输入错误'                continue        while True:            op2 = convert(raw_input(str2))            if op2 == None:                print "输入错误,请输入整数!\n"                continue            else:                break        result = operator(op1,op2,opFu)        if result <> None:            print "计算%d %s %d = %d\'n" %(op1,opFu,op2,result)print '程序退出了'\\输出结果如下需要退出程序,请输入字母q请输入第1个数:20请输入一个算术运算符:*请输入2个数:30计算20 * 30 = 600'n需要退出程序,请输入字母q

二.变量作用域

作用域是指变量在程序中的应用范围,而变量声明的位置决定它的作用域,Python按作用域区分有局部变量和全局变量。全局变量是指在一个模块中最高级别的变量有全局作用域,除非被删除,否则存活到程序运行结束,所有函数都能访问全局变量。
局部变量是指定义在函数内的变量有局部作用域,依赖于定义变量的函数现阶段是否处于活动状态,调用函数时,局部变量产生,暂时存在。-旦 函数执行完,局部变量将会被释放。局部变量的作用域仅限于定义它的函数,全局变量的作用域在整个模块内部都是可见的。在同一个函数中,不允许有同名局部变量。在不同的函数中,可以有同名局部变量。在同一个程序中,全局变量和局部变量同名时,局部变量具有更高的优先级。
下面代码演示局部变量和全局变量的使用情况:

def addAge(age):    age +=1    print 'addAge(): _age=%d age=%d' %(_age,age)    return age_age = input('输入年龄: \n')rt = addAge(_age)print 'main(): _age =%d ' %_ageprint 'main(): rt=%d' %rt\\输出结果如下>>> 输入年龄: 20addAge(): _age=20 age=21main(): _age =20 main(): rt=21>>> 

局部变量只有在局部中才能使用,其他范围是访问不到的,如age是局部变量.在全局范围就引用不到,比如在程序最后加上代码

  • lambda函数
    lambda函数的作用是创建匿名函数,是一种声明函数的特殊方式。
    lambda函数的语法如下所示:

lambda params: expr

params相当于函数接收的参数列表,expr 是函数返回值的表达式。

普通函数和一个lambda函数,案例如下:

def sum1(x,y):                             \\普通函数    return x+ysum2 = lambda x,y : x+y             \\lambda函数print sum1(3,4)print sum2(3,4)\\输出结果如下>>> 77
  • 内建函数

Python除了本身的语法结构,还提供了常用的内建函数。内建函数是程序员经常使用到的方法.可增加程序编写的效率,如float()就是内建的函数。内建函数是自动加载的, Python 的解释器可以识别。它不需要导入模块,不必做任何的操作.不需要引用就可以调用。

(1)abs()函数能够返回一个数字的绝对值,即正数。语法格式如下:

abs (x)

案例:

>>> abs(10)10>>> abs(-10)10>>> bb = -3>>> abs(bb)3

(2) bool()函 数返回值是True或False.它是Boolean (布尔值)的简写,语法格式如下:

bool([x]

案例:里面不能为空

>>> bool()False>>> bool(0)False>>> bool(-3)True>>> bool('xws')True

(3) float() 函数用于转换数据为float 类型,语法格式如下:

float([ x ])

案例:

>>> float('25')25.0>>> float(3)3.0>>> float(999.123)999.123>>> 

字符串和数字都可以转为float类型,如果不能转换,就会抛出异常。

(4) int ()函数可以将数据转换为整数,语法结构如下:

int ([ x [,base]])

案例:

>>> int(199.99)                      \\浮点数199>>> int('100')                           \\字符串100>>> int('99.9')                           \\字符串Traceback (most recent call last):  File "", line 1, in     int('99.9')ValueError: invalid literal for int() with base 10: '99.9'>>> 

需要注意当参数是字符串时,字符串中只能是整数格式,如果是浮点格式将有异常产生。

(5)range ()函数可以生成- -个列表,语法结构如下:

range ([start,] stop[,step])

案例:

>>> range(0,5)[0, 1, 2, 3, 4]>>> range(0,30,3)[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]       \\递增>>> range(30,0,-3)[30, 27, 24, 21, 18, 15, 12, 9, 6, 3]      \\递减>>> 

(6) sum () 函数可以对列表中元素求和,语法结构如下

sum(x[ ,start] )

案例:

>>> num=range(0,500,50)>>> num[0, 50, 100, 150, 200, 250, 300, 350, 400, 450]>>> print(sum(num))2250>>> 

(7) max()函数可以返回列表、元组或字符串中最大的元素,语法结构如下:

max (x)

案例:

>>> num=[6,2,12,7,64]>>> max(num)64>>> string ='d,u,a,n,g,D,U,A,N,G'>>> max(string)'u'>>> 

len()函数返回一个对象的长度,语法格式如下:

len(s)

案例

>>> len('duang')                                    \\字符串5>>> aa=['python','jave','c#','vb']              \\列表>>> len(aa)4>>> bb={'zhangsan':'100','lisi':'90'}          \\字典>>> len(bb) 2
0