python函数,变量,序列解包

1.函数特点  c1.py

# 函数
# 特点
# 1.功能性
# 2.隐藏细节
# 3.避免编写重复的代码

# round(需要取近似值的数,精确到第几位)
a = 1.236
print(round(a,2))

# 通过help 查看函数功能
# 在命令行中输入 python  回车
# 通过help(round) 回车 查看
# 可以在命令行中输入 import this 查看python之禅

2.函数形式  c2.py

def funcname(parameter_list):
    pass

# 1.参数列表可以没有
# 2.return value (若存在则为value,不存在则为none)

# practice1:(1)实现两个数字的相加;(2)打印输入的参数

#最大递归次数
# import sys
# sys.setrecursionlimit(50)
# 函数名尽量避免和系统的函数名同名

def add(x,y):
    # 形参:形式参数
    result = x + y
    return result
def print_code(code):
    print(code)



a = add(1,2) #实参:实际参数
# b = print_code("python: ")
# 这里打印a有值,b为none(在print_code只是调用了系统的print函数,并没有将code进行return,所以为默认的none)
# print(a,b)

# 下边的方法就会导致,超过最大递归调用次数,
    # 定义的print函数,会调用内部的print函数,内部的print函数又会调用自己的print函数
    # 一直自己调用自己,就会递归调用,从而超过最大递归调用深度
# def print(code):
#     print(code)
# print(a)

3.序列解包  c3.py

def damage(x,y):
    damage1 = x*3
    damage2 = y*2 +10
    return damage1,damage2

damages = damage(3,6)
# 序列解包
# 使用有意义的变量名,增强见名知意
skill1_damages,skill2_damages = damage(3,6)
print(type(damages))
print(damages)
print(skill1_damages,skill2_damages)

4.  c4.py

# 序列解包
# a = 1
# b = 2
# c = 3

# print(a,b,c)

# d,e,f = 1,2,3

# print(d,e,f)

# g为一个元组,进行序列解包
# g = 1,2,3
# h,i,j = g
# print(h,i,j)

# a = 1
# b = 1
# c = 1

a=b=c=1
print(a,b,c)

5.函数参数  c5.py

# 函数参数
#1.必须参数(在函数定义时传入的参数。即下例中的x和y)
def add(x,y):
    pass
#2.关键字参数(在传参时,不必考虑参数的顺序,通过关键字的方式,指定参数的赋值。例如下例中的方式),优点:增强了代码的可读性
    add(y=2,x=1)
#3.默认参数(参考c6.py)
    # (1)优点:
    # 使用比较方便,当参数个数比较多时(假设参数6个,有3个是变的,3个是变的,就可使用默认参数,传变的即可)
    # (2)注意点
    # ①必须参数统一写在前边,默认参数写在后边(python 的语法规范)
    # ②如果未使用关键字参数,则必须按照顺序进行;如果使用了关键字参数可以按照属性进行(参考c6.py)
    # ③在使用时,默认值参数和必须参数不能混杂使用(和定义时是一样的),会报错(参考c6.py第18行)
#4.可变参数
    # 当出现了,必须参数,*param时,默认参数,必须按照这个顺序
def demo(param1, *param, param2 = 2):
    print(param1)
    print(param)
    print(param2)
    # a = (1,2,3,4,5)
    # *a:就是将a中的元素进行平铺(就和es6中的三个点的作用一样)
    # 这种比较复杂的参数列表不太可取,在涉及之初就应该保证参数列表尽可能简单
demo('a',1,2,3,4,param2 = 'param2') 

6.  c6.py

# 默认参数,如果没有设置默认参数,须要在使用传入
# 默认 参数都放后边(写在一起),不能和必须参数间隔使用
# 如果没有特殊说明,形参和实参是按照传入的顺序进行一一对应的;如果涉及变化顺序的,可使用关键字参数进行标明传入的是哪个参数
def print_student_infor(name,old = 18,gender = '男',school = '人民路小学'):
    print('我是' + name)
    # 数字和字符串不能强制相加,须要先转类型,再相加
    print('我今年'+ str(old))
    print('我是' + gender +'生')
    print('我在' + school +'上学')

print_student_infor('鸡小萌',18,'男','人民路小学')
print('~~~~~~~~~~~~~~~~~~~')
print_student_infor('鸡小萌')
print('~~~~~~~~~~~')
print_student_infor('石敢当')
print('~~~~~~~~~~~')
print_student_infor('喜小乐',16,'女')
print('~~~~~~~关键字参数~~~~~~~~~')
print_student_infor('果果',school='光明小学',old=14,gender='女')
print('~~~~~~~必须参数和默认参数混合使用会报错~~~~~~~~~')
# 不能进行混杂间隔使用
# print_student_infor('果果',old=14,'女',school='光明小学')

7.  c7.py

def demo(param1, *param, param2 = 2):
    print(param1)
    print(param)
    print(param2)
    

# a = (1,2,3,4,5)
# *a:就是将a中的元素进行平铺(就和es6中的三个点的作用一样)
# demo('a',*a,param2 = 'param2')
# *a:将每个数值分开传入,如果再以元祖的方式传入,那么到内部就变成了二维的元祖了
# demo('a',(1,2,3,4),param2 = 'param2')
# 这种比较复杂的参数列表不太可取,在涉及之初就应该保证参数列表尽可能简单
demo('a',1,2,3,4,param2 = 'param2')

8.  求平方和  c8.py

# 求任意个数的数值的平方和
# 在Python中for循环是不能形成一个作用域,函数时可以形成一个作用域的
def squsum(*param):
    sum = 0
    for i in param:
        sum += i*i
    print(sum)

squsum(1,2,3)

9. 关键字参数  c9.py

# 关键字参数
# 打印不同城市的温度
# 这里须用两个**;**param
def city_t(param1,**param):
    print(param)
    # items 是 param 的内置方法
    for key,value in param.items():
        print(key+':'+value)

a = {'nj':'20c','sh':'30c'}

# 这里只传入param1,所以param为空{},也不会报错
city_t(1)
city_t(1,**a)

10.  变量作用域  c10.py

# 变量的作用域

# 对于函数外部定义一个变量,是全局的,在函数内部可以打印出来
# 但在函数内部定义一个变量,在函数外部是不能打印出来的

c = 50 #全局作用域
def add(x,y):
    c = x + y #局部作用域
    print(c)

add(1,2)
print(c)

11.  c11.py

# 局部变量只是一个相对的概念,例如在函数内部定义一个变量cc,
# 然后再在循环内执行 +i 操作,最终打印cc
# 在for循环外部是可以引用for循环内部的变量的例如 aa
# 在for循环内部也可使用for循环外部的cc
def demo():
    cc = 0 
    # 块级作用域(在Python中,for循环不存在块级作用域)
    # 所以在for循环外部是可以访问,for循环内部的 aa 变量的
    for i in range(0,9):
        aa = 'a'
        cc +=i
    print(aa)
    print(cc)

demo()

12.  c12.py

# 优先使用局部变量
c = 1
def demo():
    c = 2
    def fun():
        c = 3
        print(c)
    fun()

# 链式,作用域链
demo()

13.   c13.py


# 全局变量
# 在函数的内部定义一个变量,在函数外部进行访问
def demo():
    global c
    c = 1
demo()
print(c)

14.  c14.py

import c13

print(c13.c)

(备注:以上内容来自七月老师的学习笔记,仅作为学习使用)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章