函数

作者: Ji_uu | 来源:发表于2018-03-29 19:04 被阅读0次

1

#函数
#print()
a = 1.12386
result = round(a, 2)
print(result)


#保留小数后三位
a = 1.12386
print(round(a, 2))  #函数里面嵌套函数


#用循环怎么取小数点后两位?

2

# def funcname(parameter_list):   #参数列表
#     pass

'''
特点:
1 参数列表可以没有
2 return value   #没有return 语句的话,将返回None
'''

#实现两个数字的相加
#打印输入的参数
# import sys
# sys.setrecursionlimit(100)#最大的递归层数


def add(x, y):
    result = x + y
    return result


# def print(code):  #注意定义函数的时候不要用系统的关键字
#     print(code)


# def print_code(code):
#     print(code)

add(1, 2)
# print(add)
# print_code('python')

3

def add(x, y):
    result = x + y
    return result

def print_code(code):
    print(code)
    return 'hehe'

a = add(1, 2)
b = print_code('python')

print(a, b)
#执行结果
#python
#3 None     #函数的调用顺序?    #这一个None也是值得思考的

# python
# 3 hehe



def add(x, y):   
    print(x + y)
    return 'heihei'
    
print(add(8, 2))

#执行结果
# 10
# heihei

#定义一个函数,不管中间写的是什么,最后要有一个 return 关键字,返回一些东西。
# 如果没有return ,Python会自己返回一个None

4让函数返回多个结果

#函数返回多个结果

def damage(skill1, skill2):
    damage1 = skill1 * 3
    damage2 = skill2 * 2 + 10
    return damage1, damage2

damages = damage(3, 6) 

print(damages[0], damages[1])   
#这样的返回结果不好,

skill1_damage, skill2_damage = damage(3, 6)  
#这样的接收比较好。叫序列解包。不要用下标索引的方法
print(skill1_damage, skill2_damage)

#可以认为3和6是初始伤害,damages是最终计算后的伤害值
print(type(damages))

5序列解包和链式赋值

#序列解包和链式赋值
a = 1
b = 2
c = 3
a, b, c = 1, 2, 3

d = 1, 2, 3
print(type(d))

a, b, c = d #这就叫序列解包
print(d)

6参数

#参数

# 1 必须参数
# 2 关键字参数

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

f = add(5, 6)  #5, 6是实参
print(f)

c = add(y=3, x=2)   #这是关键字参数
#告诉Python实参是给那个形参赋值的
#它的意义是代码的可读性高!!


# 3 默认参数     #简化了代码 
#注意,必须参数要放在前面,不能放在默认参数的后面
def print_student_msg(name, gender='男', age=18):
    return name , gender, age

stu01 = print_student_msg(name='hehe')
stu02 = print_student_msg(name='haha', age=20)
print(stu01)
print(stu02)


#可变参数
def demo(*param):
    print(param)
    print(type(param))

demo(1,2,3,4,5,6)


# 这个相当于
def demo(param):
    print(param)
    print(type(param))

demo((1,2,3,4,5,6))


#注意可能会成为二维的元祖
def demo(*param):
    print(param)
    return (type(param))

# a = (1,2,3,4,5,6)
# demo(a)   #注意可能会成为二维的元祖  #正确的做法是  demo(*a)

f = demo((1,2,3,4,5,6))  #注意可能会成为二维的元祖
print(f)



#可变参数
def demo(param1, *param, param2=6):
    print(param1)
    print(param)
    print(param2)
    return 'hehe'

demo('a', 1,2,3)


# a
# (1, 2, 3)
# 6            


# hehe  为什么没有返回  #这样会将 hehe 返回
# f = demo('a', 1,2,3)
# print(f)


#可变参数的使用场景

def squsum(*param):
    sum = 0
    for i in param:
        sum += i * i
    print(sum)

# squsum(1, 2, 3)

# 这样也可以
# squsum(*[1,2,3])



#关键字可变参数
def city_temp(**param):
    print(param)
    print(type(param))
    pass

city_temp(bj='32c', xm='23c', sh='30c')

#打印的结果
# {'bj': '32c', 'xm': '23c', 'sh': '30c'}
# <class 'dict'>


#用循环来打印   #错误的演示
def city_temp(**param):
    for key, value in param:
        print(key, ':', value)

city_temp(bj='32c', xm='23c', sh='30c')

# 打印的结果
# b : j
# x : m
# s : h


#正确的打开方式
def city_temp(**param):
    for key, value in param.items():  #注意方法后面的括号
        print(key, ':', value)

city_temp(bj='32c', xm='23c', sh='30c')

# 打印的结果
# bj : 32c
# xm : 23c
# sh : 30c

#补充
a = (bj='32c', xm='23c', sh='30c')
city_temp(**a)

7变量的作用域

#变量作用域
c = 50

def add(x, y):
    c = x + y
    print(c)   #这个c和上面的c作用域的范围不一样,

add(1, 3)
print(c)

#打印的结果
# 4
# 50



def demo():
    c = 10

print(c) #这个会报错  #外部无法引用内部的变量




c = 10        #全局变量
def demo():
    c = 50     #局部变量   #可以在函数的内部引用外部的变量
    print(c)



#局部变量只是相对的。 
print('----------------------------------')
def demo():
    c = 50
    for i in range(0, 9):
        a = 'a'
        c += 1
    print(c)
    print(a)   #我们在外部可以引用for循环内部的变量
                #原因是Python中没有块级作用域的概念
demo()


c = 1

def func1():
    c = 2
    def func2():
        c = 3
        print(c)
    func2()

func1()   
#我们一直往下看,发现func2() 函数调用了,c=3 在func2() 的内部,其他的都是在 func2() 外部



#global关键字
def demo():
    global c 
    c = 666

demo()   #执行函数后global才有效
print(c)  

#执行结果
#666
# 全局变量在整个应用程序中都可以使用的

相关文章

  • Excel(三)

    AND函数 OR函数 NOT函数 IF函数 频率分析函数FREQUENCY

  • if、else if、for、while、repeat函数

    ①if函数 ②else if函数 ③for函数 ④while函数 ⑤repeat函数

  • strsplit、mapply、paste、match函数

    strsplit函数 mapply函数 strsplit函数 mapply函数 paste函数 match函数 第...

  • Oracle中常用函数(SQL)

    Oracle函授有以下几个分类:数字函数、字符函数、日期函数、转换函数、集合函数、分析函数 数字函数: 字符函数:...

  • MySQL函数

    字符函数 数字运算函数 比较运算符和函数 日期时间函数 信息函数 聚合函数 加密函数 流程函数

  • BI-SQL丨AND & OR & IN

    AND函数 & OR函数 & IN函数 AND函数、OR函数和IN函数都可以理解是WHERE函数的补充,当然也可以...

  • Python之函数

    课程大纲 函数定义 函数的参数 函数的返回值 高阶函数 函数作用域 递归函数 匿名函数 内置函数 函数式编程 将函...

  • 函数基本知识

    函数 函数的定义: def 函数名() 函数的调用:函数名() #不能将函数调用放在函数定义上方 函数的文档注...

  • 积分表——不定期更新

    基本初等函数包括: 常函数: 幂函数 指数函数 对数函数 三角函数 反三角函数 I、反函数Ⅱ、复合函数:初等函数(...

  • MySQL基本使用

    函数 常用函数 数学函数 字符串函数 日期函数

网友评论

      本文标题:函数

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