PoEdu_Python_Lesson006_调试方法、函数

PyCharm工具使用

step over 步过

单步 相当于VS中的F10

step into 步入

可以进入方法 相当于VS中的F11

step into Mycode 只步入自己的方法

一不小心进入系统提供的方法时,可以利用这个跳回自己的代码

函数

函数名是一个变量

print是一个函数名,是一个变量,可以这样做:

print = 10 ,这样写没问题,但是之后用print就完蛋了…因为本来它是指向了一个函数,现在却变成了一个变量,再使用print进行打印内容就不行了

也可以这样玩:other = print,那么就可以使用other进行打印了

也可以这样使用:def foo(x,f): f(x)

这样调用:foo(10,print) 会打印10

理解:相当于事先给函数名(变量)与函数做了一个绑定,但这个函数名实际上就是一个变量,就像print,我们可以对它进行赋值,赋值过后它就变了,不再执行打印这个函数的功能了

map()

map(print,1,2,3,4)

报错,后面的int不可迭代,应该这样:

map(print,[1,2,3,4]),返回的是一个迭代对象

可以这样做:map(foo,list(range(10)))

注意,map每次只会传一个参数到function,需要每次传入多个参数,可以使用reduce

reduce

需要导入

IDE中:from functools import reduce

Shell中:import functools

会导入所有的方法,不管你需不需要

所以还是使用和IDE中的一样比较好,导入指定的方法,导入的无用方法过多,自己写方法重名的时候都不晓得该去哪里找问题

使用示例:

def add(x,y):
    return x+y
reduce(add,list(range(1,10)))

打印45,做了一个1到9的累加

字符串转数字

字符串转数字示例:

def str_to_num(str):
    return {'0':0,'1':1,'2',2}[str]
    # 返回一个列表list

def list_to_num(x,y):
    return x*10+y

num = reduce(list_to_num,map(str_to_num,"454512"))

>

过滤函数(其实是个类) filter

筛选示例:

def is_odd(num):
    return num%2 == 1

filter(isodd,45511154)
排序 sorted

默认是从低到高

示例1:

sorted(5435435435)

后面加一个参数:方法

示例:

sorted([‘a’,’c’,’d’,’b’,’A’],key=str.lower)

后面接的方法要以 key=方法 这样的形式

把函数返回的做法(延时调用)

使我们可以先把表达式构造好
示例1:

#直接返回
def sum(*args):
    numsum=0
    for num in args:
        numsum += num
    return numsum

# 延时返回
def lazy_sum(*args):
    def sum():
        numsum=0
        for num in args:
            numsum += num
        return numsum
    rturn sum
    #这里的sum是方法名称

#调用
num = laze_sum(1,2,34,53)
匿名函数

示例

foo = lamabda num:num*num

调用:foo(10)

字符串转数字 int(str,base)

示例:

int(‘111’,2) 这里的2是指前面的111是二进制的

int(‘FFFF’,16)

当前的int都是默认的前面是10,也可以自己做绑定:

int2 = functools.partial(int,base=2)

函数里面必须有代码

即使啥都不写,也要有一个pass,不然就会报错

看上去print里面只有一个pass,但是它的参数里有一个self,可能调用了哪个类起作用的

作业:公司内部的超市的刷卡系统

登录 员工的账户 (因为是内部的,所以是员工账户,其实相当于一个客户)

剩余金额、每月工资

已有商品(5件)

选购:输入商品名或者商品序号

扣费:钱不够/扣费成功

钱不够:系统退出(你需要工作多久才能买这个东西(天))

扣费成功:继续购物/退出

打工/买东西的游戏

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值