Python基础6

本文介绍了Python中的函数,包括位置参数、关键字参数、默认参数和不定长参数的概念及使用方式。详细阐述了变量作用域的LEGB原则,并讨论了不同类型的函数返回值。最后给出了作业,包括实现random.sample、max方法以及比较两个字符串是否相等的函数。

1.函数

定义:函数是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

作用:函数的作用

使用:函数必须先创建才可以使用,该过程称为函数定义,函数创建后可以使用,使用过程称为函数调用

函数定义与调用

1) >>> def 函数名(形参1,形参2):  # 定义

...     函数体

函数名(实参1,实参2)    #调用

关键字:

help("keywords") #查看Python系统关键字有哪些
import keyword
print(keyword.kwlist)
    False               def                 if         
    None                del                 import     
    True                elif                in         
    and                 else                is         
    as                  except              lambda     
    assert              finally             nonlocal   
    break               for                 not         
    class               from                or         
    continue            global              pass

函数参数与作用域:

位置参数

位置参数又称为非关键字参数

位置参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样

def print_info(info):
    print(info)

print_info('hello,sara')
运行结果:
hello,sara
关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def print_info(info1, info2):
    print(info1, info2)
print_info(info2='信息二', info1='信息一')
运行结果:
信息一 信息二
默认参数

用函数时,如果没有传递参数,则会使用默认参数。

def print_info(name, age=20):
    print(name, age)

print_info('Tom', 10)
print_info('sara')
运行结果:
Tom 10
sara 20
不定长参数

加了星号”*“的变量args会存放所有未命名的变量参数,args为元组 ;而加”*“的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。

def print_info(name, *args, **kwargs):
    print(name, args, kwargs)

print_info('sara', 'java', 'c', 'bigdata', age=23, height=160, address='beijing')
运行结果:
sara ('java', 'c', 'bigdata') {'age': 23, 'height': 160, 'address': 'beijing'}

变量作用域LEGB

  • L:locals 函数内的名称空间,包括局部变量和实参-

  • E:enclosing 外部嵌套函数的名称空间,即相邻的上一层,打个比方说:func2中没有age变量则会去func里找这个-

  • G:globals 全局变量-

  • B:builtins 内置模块的名称空间

    查找顺序:先去local中查找变量,再去全局,再去buil-In变量查找

pass_line = 60  # pass_line: global


def func(val):  # val: local
    pass_line = 90  # pass_line: local
    if val >= pass_line:
        print("pass")
    else:
        print("failed")

    def fun_in():
        print(val)  # val: enclosing
    return fun_in


def maximum(val1, val2):
    return max(val1, val2)  # max(): build-in

函数返回值

函数根据有没有参数,有没有返回值,可以相互组合,一共有4种

无参数,无返回值
无参数,有返回值
有参数,无返回值
有参数,有返回值

无参数,无返回值的函数

def printMenu():
        print("--------------------------")
        print(" 西府岐山面")
        print(" 旺旺小厨")
        print(" 羊肉面")
        print("--------------------------")
printMenu()
运行结果:
--------------------------
 西府岐山面
 旺旺小厨
 羊肉面
--------------------------

无参数,有返回值的函数

# 获取温度
def getTemperature():
        return 18
temperature = getTemperature()
print('当前的温度为:%d'%temperature)
运行结果:
当前的温度为:18

有参数,无返回值的函数

此类函数,能接收参数,但不可以返回数据,一般情况下,对某些变量设置数据而不需结果时,用此类函数

有参数,有返回值的函数

此类函数,不仅能接收参数,还可以返回某个数据,一般情况下,像数据处理并需要结果的应用,用此类函数

# 计算1~num的累积和
def SUM(num):
        result = 0
        i = 1
        while i<=num:
            result = result + i
            i+=1
        return result
result = SUM(100)
print('1~100的累积和为:%d'%result)

作业

实现random.sample方法

**random.sample()**可以从指定的序列中,随机的截取指定长度的片断,不作原地修改。

import random
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list1= random.sample(list, 5)  #从list中随机获取5个元素,作为一个片断返回  
print (list1) 
print (list) #原有序列并没有改变
运行结果:
[9, 3, 6, 10, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

实现Max方法

max() 函数返回给定参数的最大值,参数可以为序列。

语法

max(x,y,z,…)

print (("max(10, 100, 1000) : "), max(10, 100, 1000))
运行结果:
max(10, 100, 1000) :  1000

实现判断两个字符串是否相等的方法

Python的字符串比较与Java类似,也需要一个比较函数,而不能用==符号。用cmp()方法来比较两个对象,相等返回 0 ,前大于后,返回 1,小于返回 -1.

import operator as op
print(op.eq("123","123456"))
print(op.eq("123","123"))
运行结果:
False
True
str1="haha"
str2="heihei"
if (str1==str2):
    print("相等")
else:
    print("不相等")
运行结果:
不相等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值