美文网首页
Python基础总结-08(函数基础)

Python基础总结-08(函数基础)

作者: zxhlcl | 来源:发表于2018-10-10 16:30 被阅读0次

一、深拷贝和浅拷贝

拷贝:将变量中的值复制一份,产生新的数据,返回新数据所对应的地址
浅拷贝:直接拷贝地址(切片和字典列表的copy方法是浅拷贝)
深拷贝:将地址对应的值拷贝,产生新的地址
浅拷贝图解:

浅拷贝.png
深拷贝图解:
深拷贝.png

二、字典和列表的应用

字典和列表的嵌套调用,可以实现诸多的变换

my_class={'classname':'python1807',
          'location':'科华北路162号',
          'all_student':[{'name': '小李',  'age': 15, 'school': '清华'},
                         {'name': '小王', 'age': 18, 'school': '北大'},
                         {'name': '小张', 'age': 20, 'school': '浙大'},
                         {'name': '小赵', 'age': 23, 'school': '川大'}]}
#练习1:添加学生
name=input("请输入学生姓名:")
age=input("请输入学生年龄:")
school=input("请输入学生高校:")
student={'name':name,"age":age,"school":school}
my_class['all_student'].append(student)
#练习2:删除学生
index=0
while index<len(my_class['all_student']):
    if int(my_class['all_student'][index]['age'])<20:
        del my_class['all_student'][index]
        continue #删除后不让index增加
    index+=1
print(my_class)
#或者:
for item in my_class["all_student"].copy():
    if item["age"]<20:
        my_class["all_student"].remove(item)
print(my_class)

三、函数基础

包括函数的申明,函数的参数,函数的返回值

1.函数的申明

语法
def 函数名(参数列表):
函数体
a.def--关键字
b.函数名--标识符,不能是关键字,见名知义
c.()--固定样式
d.参数列表--形式参数,可以有多个也可以没有,从函数的外部想函数里面传值
写作步骤
1、确定函数的功能
2、根据功能确定函数名
3、确定参数
4、编写函数体
5、确定返回值
调用过程
1、回到函数申明的位置
2、用实参给形参赋值
3、执行函数体
4、返回返回值
5、回到函数调用位置,执行后续代码

def N_add(n):
    sum=0
    for i in range(0,n+1):
        sum+=i
    return sum
print(N_add(10))

2.函数的参数

函数的参数类型有以下几种:
1、必需参数:调用时的数量必须和声明时的一样。
2、关键字参数:函数调用使用关键字参数来确定传入的参数值
3、默认参数:如果没有传递参数,则会使用默认参数
4、不定长参数:参数的个数不确定
位置参数和关键字参数

def hello1(greeting,name):
    str='{0},{1}'
    print(str.format(greeting,name))
hello1("hello","James") #位置参数
hello1(name='Alice',greeting='hello') #关键字参数

默认参数
1、设置默认参数时,位置参数在前,默认参数在后,否则报错
2、定义默认参数要牢记:默认参数必须指向不可变对象
3、调用的时候位置参数必须赋值,但可以不给默认参数赋值

def hello2(name1,greeting="hello",name2='James Band'): #默认参数
    str='{0},{1} and {2}'
    print(str.format(greeting,name1,name2))
hello2('James')
hello2('James ',name2="James Washtion")

不定长参数
*param 以元组的形式收集参数
**param 以字典的形式收集参数
注意:同时含有*param和**param时,*param要放到**param的前面

def calc(*numbers): 
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
calc(1, 3, 5, 7) #以元组的形式收集参数
nums=1,2,3,4,5
calc(*nums)#解包:将元组的元素分解成单个变量
def person(name, age, **param):
      print('name:', name, 'age:', age, 'other:', param)
person('Jack',36,city='Hangzhou',job='Engineer') 
other = {'city': 'Hangzhou', 'job': 'Engineer'}
person('Jack', 36, **other)#解包:将字典的键值对分解成单个变量

注意:*后面的位置参数在函数调用的时候必须指定参数名称

def person(name, age, *param,city="chengdu",job):
    print('name:', name, 'age:', age, 'other:', param,"city",city,'job',job)
person('Jack', 36, '清华','硕士',city='Hangzhou', job='Engineer') #job必须指定参数名称

参数类型组合
不推荐采用组合形式的参数组合,可读性比较差

def print_something(x1,x2,*param1,**param2):
    print(x1,x2,sep=',')
    print(param1)
    print(param2)
print_something(1,2,3,4,5,6,name='James',age='22')
'''
1,2
(3, 4, 5, 6)
{'name': 'James', 'age': '22'}
'''

3、函数的返回值

1、无return:返回值为None
2、有return:执行到return语句的时候,return后面的结果为返回值
什么时候需要函数有返回值?若函数功能产生新的数据,就将新的数据返回;若不产生新的数据,可返回值可以为None

4、函数的描述信息和类型提示

def function (param):
   函数的描述信息 (''' ''')
   函数体
参数列表中可以通过 “参数名:参数类型” 指定参数类型,也可以通过默认值来指定参数类型;参数列表中提示了参数类型后,代码可以进行提示
“->类型”可以提示返回值的类型

def string_find(alpha:str,string:str)->int:
    '''
    从string中找到alpha的个数
    :param alpha: str
    :param string: str
    :return: int
    '''
    count=0
    for x in string:
        if alpha==x:count+=1
    return count

相关文章

网友评论

      本文标题:Python基础总结-08(函数基础)

      本文链接:https://www.haomeiwen.com/subject/fdrpaftx.html