Python基础——函数与字典和集合

函数

1.函数的参数

def add(num1,num2)
      print(num1+num2)
add(1,3)
4

2.函数的返回值

在python中,并不需要定义函数的返回值类型,函数可以返回不同类型的值;而如果没有返回值,则默认返回None。

def hello();
      print("Hello~")
print(Hello())
Hello~
None

3.形参和实参

形参指的是函数定义的过程中小括号里的参数,而实参则指的是函数在被调用的过程中传递进来的参数。
在形参中是打包的意思
在实参中
是解包的意思

def sayHi(name):
	 print("嗨, %s" % name)
sayHi("小甲鱼")
嗨,小甲鱼

4.函数文档

def exchangeRate(dollar):
    """
    功能:汇率转换,美元 -> 人民币
    汇率:6.54
    日期:2021-06-25
    """
    return dollar * 6.54
exchangeRate(10)
65.4

5.默认参数和关键参数

关键参数就是在传入实参时明确指定形参都变量名,其特点就是参数之间不存在先后顺序。
默认参数使得函数的调用更加便捷。

def watchmovie(name ='黄莹',cigarette =True,beer =True,girlfriend =True):
    sentence = name + '带着'
    if cigarette:
        sentence = sentence + '香烟'
    if beer:
        sentence = sentence + '啤酒'
    if girlfriend:
        if cigarette or beer:
            sentence = sentence + '和女朋友'
        else:
            sentence = sentence + '女朋友'
    sentence = sentence + '去看电影'
    return sentence
print(watchmovie(name ='小金鱼',girlfriend =False))

6.收集参数

收集参数前面*是打包的意思

def test(*params):
	 print("有%d个参数" % len(params)
	 print("第二个参数是:,params[1])
test('f','i','s','h')
有4个参数
第二个参数是:i

object参数是一个收集参数,如果传入多个参数,将依次打印出来;sep参数指定多个参数之间的分隔符,默认是空格;end参数指定以什么字符结束打印,默认是换行符;file参数指定输出的位置;flush指定是否强制刷新缓存。

7.局部变量和全局变量

局部变量的作用范围只能在函数内部生效,它不能在函数外被引用。全局变量的作用范围更广泛。

def discount(price,rate):
    final_price = price*rate
    #试图修改全局变量的值
    old_price = 50
    print('在局部变量中修改后old_price的值是:%.2f'% old_price)
    return final_price
old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discount(old_price, rate)
print('全局变量old_price现在的值是::%.2f'% old_price)
print('打折后价格是:',old_price * rate)

8.global关键字

global可以在函数内部去修改全局变量。

count =5
def myFun():
	 global count
	 count =10
	 print(count)
myFun()
10
count
10

9.内嵌函数

在嵌套函数中,内部函数可以引用外部函数的局部变量:

def fun1():
	  x =88
	  def fun2():
	  	    print(x)
	  fun2()
fun1()
88

10.闭包

def funX(x):
	  def funY(y):
	  	    return x*y
	  return funY
temp = funX(8)
temp(5)
40

11.函数式编程

[1] lambda
lambda关键字可以用来创建匿名函数。

g =lambda x:2*x+1
g(5)
11

[2]filter
filter()函数是一个过滤器,它的作用是在海量的数据里面提取出有用的信息。
filter()这个内置函数有两个参数:第一个参数可以是一个函数也可以是None,是一个函数的话,则将第二个可迭代对象里的每一个元素作为函数的参数进行计算,把返回True的值筛选出来;如果第一个参数是None,则直接将第二个参数中为True的值筛选出来。

temp = filter(None,[1,0,False,True]
list(temp)
[1,True]

[3]map
map一般作“映射”来解释。

list =(map(lambda x:x*2,range(10)))
[0,2,4,6,8,10,12,14,16,18]

12.一些函数题型

#阶乘
def recursion(n):
    result =n
    for i in range(1,n):
        result *=i
    return result
number = int(input('请输入一个正整数:'))
result = recursion(number)
print("%d的阶乘:%d"%(number,result))

#汉诺塔
def hanoi(n,x,y,z):
    if n ==1:
        print(x,'-->',z)
    else:
        hanoi(n-1,x,z,y)
        print(x,'-->',z)
        hanoi(n-1,y,x,z)
n =int(input('请输入汉诺塔的层数:'))
hanoi(n,'x','y','z')

字典和集合

1.创建和访问字典

可以使用dict()内置来创建字典:

dict1 =dict((('f',10),('i',20),('s',30)))
dict1
{'f':10,'i':20,'s':30}

因为dict()函数的参数可以是一个序列(但不能是多个),所以要打包成一个元组(或列表)序列。

字典不允许同一个键出现两次,如果同一个键被赋值两次,后一个值会被记住:

courses ={"小甲鱼“:"《零基础学习python》","不二如是":《零基础学习Scratch》","小甲鱼“:"《极客python之效率革命》"}
courses
{"小甲鱼“:'《极客python之效率革命》','不二如是":《零基础学习Scratch》'}

字典是不支持拼接和重复操作的:

f = d+e
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>

2.各种内置方法

(1)fromkeys(seq[,value])
fromkeys()方法用于创建并返回一个新的字典,它有两个参数;第一个参数是字典的键;第二个参数是可选的,是传入键对应的值,如果不提供,那么默认是None。

dict1 ={ }
dict1.fromkeys((1,2,3))
{1:None,2:None,3:None}

(2)keys(),values()和来item()
key()用于返回字典的键,value是()用于返回字典中所有的值,item()是返回字典中所有的键值对。

dict1={}
dict1 =dict1.fromkeys(range(32),'赞')
dict1.keys()
dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
dict1.values()
dict_values(['赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞'])
dict1.items()
dict_items([(0, '赞'), (1, '赞'), (2, '赞'), (3, '赞'), (4, '赞'), (5, '赞'), (6, '赞'), (7, '赞'), (8, '赞'), (9, '赞'), (10, '赞'), (11, '赞'), (12, '赞'), (13, '赞'), (14, '赞'), (15, '赞'), (16, '赞'), (17, '赞'), (18, '赞'), (19, '赞'), (20, '赞'), (21, '赞'), (22, '赞'), (23, '赞'), (24, '赞'), (25, '赞'), (26, '赞'), (27, '赞'), (28, '赞'), (29, '赞'), (30, '赞'), (31, '赞')])

(3)get(key[,default])
get()方法提供了更宽松的方式去访问字典项,当键不存在的时候,get()方法并不会报错,只是默默的返回了一个None。

如果不知道一个键是否在字典中,可以用(in或 not in)来判断。

如果需要清空一个字典,则使用clear()方法。

a ={'姓名':'小甲鱼','密码':'123456'}
a =b
b
{'姓名':'小甲鱼','密码':'123456'}
a.clear()
a
{}
b
{}

(4)copy(),setdefault(key[,default]),update([other])
copy()方法是用于拷贝整个字典
setdefault()在字典中找不到相应的键时会自动添加
update()用于更新字典

a ={1:'one',2:'two',3:'three'}
b =a.copy()
id(a)
1680671352064
id(b)
1680671352512
a ={1:'one',2:'two',3:'three'}
b =a.copy()
id(a)
1680671352064
id(b)
1680671352512
a ={1:'one',2:'two',3:'three'}
a.setdefault(2)
'two'
a.setdefault(9)
a
{1: 'one', 2: 'two', 3: 'three', 9: None}
pets ={'米奇':'老鼠','汤姆':'猫'}
pets.update(米奇='狗')
pets
{'米奇': '狗', '汤姆': '猫'}

3.创建集合

创建集合有两种方法:一种是直接把一堆元素用大括号({})括起来;另一种是用set()内置函数。

set1 ={'小甲鱼','小金鱼','小鲤鱼'}
set2 =set(['小甲鱼','小金鱼','小鲤鱼'])
set1 ==set2
Ture

4.不可变集合

frozenset()函数就是把元素给冰冻起来:

set1.add(7)
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    set1.add(7)
AttributeError: 'frozenset' object has no attribute 'add'

总结

这已经是我学习python的第二周了,相对于Java来说,python这一编程语言稍微简单一些,但也有许多复杂的内容需要去学习,虽然已经学习两周了,但我仍有一些基础的知识没有记牢固。今天我将会把我这周学习都内容分享给大家。
以上就是我这一周学习的新的内容,这个周末小组也将进行第一次考试,有些小紧张,因为好多东西还都没有学会,但我也会继续努力的,争取在小组中取得优异的成绩。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值