python.day.07——函数式编程

一、嵌套循环

#99乘法表
for x in range(1, 10):
    for y in range(1,x+1):
        print("%s*%s=%s"%(x,y,x*y), end='') #遍历完一次,不换行输出
    print("\n")

控制台输出结果;
1*1=1

2*1=22*2=4

3*1=33*2=63*3=9

4*1=44*2=84*3=124*4=16

5*1=55*2=105*3=155*4=205*5=25

6*1=66*2=126*3=186*4=246*5=306*6=36

7*1=77*2=147*3=217*4=287*5=357*6=427*7=49

8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64

9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

二、函数

  • def  关键字 函数名/方法名():
  • 函数名的要求:见名知意,小写字母  print_str()
  • 写代码  这个函数要实现的功能一
  • 个性化定制, 输入参数,逆函数在定义有几个参数,那么输入几个参数
  • 参数:位置参数、默认参数必须放在位置参数的后面
#完成任意整数序列的累加
def sum(i,j):  #位置参数
    mun = 0
    for L1 in range(i, j):
        mun += L1
        t1_01 = mun
    print("新手题题1结果:%s" % t1_01)

x = 1
y = 101
sum(x, y)   #传递的参数        
   
#第一种:报错(“默认参数”放在“位置参数”前)
def sum(i=10,j):
    mun = 0
    for L1 in range(i, j):
        mun += L1
        t1_01 = mun
    print("新手题题1结果:%s" % t1_01)

x = 1
y = 101

控制台打印结果:
  File "D:/python/day_04/tast/functions.py", line 3
    def sum(i=10,j):
           ^
SyntaxError: non-default argument follows default argument
#第二种:成功(“默认参数”放在“位置参数”后)
def sum(i,j=101):
    mun = 0
    for L1 in range(i, j):
        mun += L1
        t1_01 = mun
    print("新手题题1结果:%s" % t1_01)

x = 1
y = 101
sum(x)

控制台打印结果:
新手题题1结果:5050
#第二种:成功(“位置参数”的优先级比“默认参数”高)
def sum(i=1,j=101):
    mun = 0
    for L1 in range(i, j):
        mun += L1
        t1_01 = mun
    print("新手题题1结果:%s" % t1_01)

x = 2
y = 11
sum(x,y)

控制台打印结果:
新手题题1结果:54

三、返回值 return

  • 返回值 return表达式
  • a、print会把结果直接打印到控制台(强制输出到控制台)
  • b、return会把结果返回给你,由你处置
  • c、返回值必须要有一个变量来进行接收
  • d、return 后面的代码是不会被执行的
  • 什么时候用return?(需要返回值进行处理;)
#第一种:使用print,会导致拿不到result的值def add_num(m,n):    sum = 0    for i in range(m ,n+1):        sum += i    print(sum)result = add_num(1,100)print("函数调用计算结果值",result)控制台打印结果:5050函数调用计算结果值 None

#第二种:使用return ,可以获得result的值

def add_num(m,n):
    sum = 0
    for i in range(m ,n+1):
        sum += i
#    print(sum)
    return sum

result = add_num(1,100print("函数调用计算结果值",result)

控制台打印结果:

函数调用计算结果值 5050

#第三种:既能打印,又有返回值

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

result = add_num(1,100print("函数调用计算结果值",result)

控制台打印结果:
5050
函数调用计算结果值 5050

#第四种:return后面存在代码不会被执行

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

result = add_num(1,100print("函数调用计算结果值",result)

控制台打印结果:
函数调用计算结果值 5050

四、变量的作用范围

  • 规范:全局变量:大写字母      局部变量:小写字母
  • 区别1:作用域不一样:
                a、全局变量:在当前Py模块中都可以调用
                b、局部变量:只能在函数内部使用
  • 区别2:调用优先级不一样:如果全局变量与局部变量名存在重复的情况下,优先调用局部变量
  • 区别3:如何修改全局变量的值:global  (需要先声明一下全局变量)
  • 区别4:列表和字典都可以去做更改值 (这是一种特殊情况)
#区别一:作用域不一样:
C = 6      #全局变量
def add_num():
    a = 8    #局部变量
    print(a+C)
add_num()
print(C)
print(a)

控制台输出:
14
6
Traceback (most recent call last):
  File "D:/python/day_05/tast/05_02.py", line 8, in <module>
    print(a)
NameError: name 'a' is not defined
#区别二:调用优先级不一样
C = 6   
def add_num():
    a = 8  
    C = 2  #重名
    print(a+C)
add_num()
print(C)

控制台输出:
10
6
#区别三:修改全局变量的值
C = 6   #全局变量
def add_num():
    a = 8  
    global C #声明全局变量
    C = 2  
    print(a+C)
add_num()
print(C)

控制台输出:
10
2
#区别四:列表和字典都可以去做更改值:第一种
List_1 =[1, 2, 3]
def print_list():
      List_1 =10
#    List_1.append(10)
#    List_1[2] = 10
      print(List_1)
print_list()
print(List_1)

控制台打印:
10
[1, 2, 3]
#区别四:列表和字典都可以去做更改值:第二种(如果值是列表,那么在函数里面进行赋值运算,那么全局变量也会被更改)
List_1 =[1, 2, 3]
def print_list():    
    List_1[2] = 10
    print(List_1)
print_list()
print(List_1)

控制台打印:
[1, 2, 10]
[1, 2, 10]

 五、参数

  • 位置参数、默认参数:函数:从左往右传递值
  • 动态参数:一个参数:把传递的参数当做元组处理
  • 动态参数:两个星号:把传递进来的参数作为字典处理
#位置参数、默认参数
def add(a=1,b=2,c=3):
    print(a+b+c)
add(b=6)       #6传递给b
add(6)             #6传递给a

控制台输出值:
10
11
#动态参数
def add_1(*args):
print(args)
add_1(1,2,3,4)

控制台输出:
(1, 2, 3, 4)

def add_2(*args):
    print(args)
add_2([1, 2, 3, 4])

控制台输出:
([1, 2, 3, 4],)
#两个星号的动态参数:将输入的参数当做字典处理
def add_3(**args):
    print(args)

add_3(x=1, y=2)

控制台输出:
{'x': 1, 'y': 2}

#一个星号/两个星号:参数输入
def add_4(*args,**kwargs):
print("第一个参数", args)
print("第二个参数", kwargs)
add_4(1, 2, 3, 4, x=1, y=2)

控制台输出:
第一个参数 (1, 2, 3, 4)
第二个参数 {'x': 1, 'y': 2}

#一个星号/两个星号:参数输入
def add_5(*args,**kwargs):
    print("第一个参数", args)
    print("第二个参数", kwargs)
dict_1={"age":18,"sex":"f"}
add_5(1, 2, 3, 4,**dict_1 )

控制台输出:
第一个参数 (1, 2, 3, 4)
第二个参数 {'age': 18, 'sex': 'f'}

 

posted @ 2018-06-12 16:14  Rosay  阅读(157)  评论(0编辑  收藏  举报