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件)
选购:输入商品名或者商品序号
扣费:钱不够/扣费成功
钱不够:系统退出(你需要工作多久才能买这个东西(天))
扣费成功:继续购物/退出
打工/买东西的游戏