python函数

# 定义函数

# 如果不主动调用函数,函数是不会执行的
def say_hello():
    print 'hello1'
    print 'hello2'
    print 'hello3'

# 函数的调用
say_hello()

hello1
hello2
hello3

def sum_2_sum():
    """对两个数字的求和"""
    num1 = 20
    num2 = 20
    result = num1 + num2
    print '%d + %d = %d' %(num1,num2,result)

sum_2_sum()

20 + 20 = 40

 

函数参数的使用
在函数名后面的小括号内填写 参数
多个参数之间使用 , 分隔

# 定义函数时的变量,叫形参 形参可以任意起名字
def sum_2_sum(num1, num2):
    result = num1 + num2
    print '%d + %d = %d' % (num1, num2, result)

# 在调用函数的时候
# 在调用函数时传递得参数称为实参(真实的数据信息)
sum_2_sum(5, 20)

5 + 20 = 25

局部变量:在函数内部定义的普通变量,只在函数内部作用,函数执行结束
变量会自动删除
全局变量

a = 1

print 'outside:', id(a)


def fun():
    global a  # 声明a为全局变量
    a = 5
    print 'inside:', id(a)


fun()
print a
print id(a)

outside: 17730664
inside: 17730568
5
17730568

参数:形参 实参
形参:位置参数 默认参数 可变参数 关键字参数
# 位置参数:形参和实参个数必须保持一致

def getInfo(name,age):
    print name, age


getInfo(age=12, name='westos')

westos 12
# 默认参数:形参和实参的个数可以不一致

def mypow(x, y=2):
    print x ** y


mypow(4)
# 默认形参可以改变
mypow(4, 3)

16
64


# 可变参数

def mysum(*agrs):
    """
    *args:是可变参数
     args:是元组类型数据
     args:名字可变(因为是形参 名字可变)
    :param agrs:
    :return:
    """
    print agrs
    sum = 0
    for item in agrs:
        sum += item
    print sum


mysum(1, 2, 3, 4, 5)

(1, 2, 3, 4, 5)
15

def mysum(*agrs):
    print agrs
    sum = 0
    for item in agrs:
        sum += item
    print sum


# 对list tuple set 解包时,只需要在变量前加 *
nums = [1, 2, 3, 4, 66, 78]
nums1 = (1, 2, 3, 4, 5)
nums2 = {1, 2, 3}
# *nums:解包
mysum(*nums2)

(1, 2, 3)
6

# 4.关键字参数

def getStuInfo(name, age, **kwargs):
    """
    **kwargs:是一个字典;可以传递任意多的key-value对
    :param name:
    :param age:
    :param kwargs:
    :return:
    """
    print name, age
    print kwargs


getStuInfo('westos', 18, hobbies=['code', 'running'], gender='female')

westos 18
{'gender': 'female', 'hobbies': ['code', 'running']}

返回值:函数运算的结果,还需要进一步操作时,给一个返回值
return用来返回函数执行结果的,如果没有返回值,默认为None
python可以间接返回多个值(返回了一个元组)
一旦遇到return,函数执行结束,后面的代码不会执行

def mypow(x, y=2):
    return x ** y, x + y
    print 'hello'


# 对元组进行解包
a, b = mypow(3)
print a, b

9 5

列表生成式

1.

s = '51 5000 10000'
li = []
for item in s.split():
    li.append(int(item))
k, a, b = li
print k, a, b

51 5000 10000

s = '51 5000 10000'
k, a, b = [int(item) for item in s.split()]
print k,a,b

51 5000 10000


# 2.生成一个列表,列表元素分别为[1**2,2**2,3**2,4**2...n**2]

li = []
for i in range(1, 8):
    li.append(i ** 2)
print li

[1, 4, 9, 16, 25, 36, 49]

print [i ** 2 for i in range(1, 8)]

[1, 4, 9, 16, 25, 36, 49]

print [i ** 2 for i in range(1, 8) if i % 2 == 0]

[4, 16, 36]

 

# 1.找出1~10之间的所有偶数,并且返回一个列表(包含以这个偶数为半径的圆的面积)

li = []
for r in range(2, 11, 2):  # [2,4,6,8,10]
    square = math.pi * r * r
    li.append(square)
print li

[12.566370614359172, 50.26548245743669, 113.09733552923255, 201.06192982974676, 314.1592653589793]

print [math.pi * r * r for r in range(2, 11, 2)]

[12.566370614359172, 50.26548245743669, 113.09733552923255, 201.06192982974676, 314.1592653589793]

# 2.找出1~10之间的所有奇数,并且返回一个列表(所有的奇数转换为字符串)

print [str(r) for r in range(1,11,2)]

['1', '3', '5', '7', '9']

#3.找出1~num之间的所有质数

def isPrime(num):
    for i in range(2,num):
        if num % i == 0:
            return False
    else:
        return True

print [i for i in range(2,101) if isPrime(i)]

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

字典生成式

# 1.假设有20个学生,学分在60~100之间,筛选出成绩在90分以上的学生

import random

stuInfo = {}
for i in range(20):
    name = 'westos' + str(i)
    score = random.randint(60,100)
    stuInfo[name] = score
#     stuInfo['westos'+str(i)] = random.randint(60,100)
hightscore = {}
for name,score in stuInfo.items():
    if score > 90:
        hightscore[name] = score
print hightscore

{'westos13': 98}

import random
stuInfo = {'westos' + str(i): random.randint(60, 100) for i in range(20)}
print {name: score for name, score in stuInfo.items() if score > 90}

{'westos11': 97, 'westos14': 95, 'westos15': 95, 'westos16': 95, 'westos5': 97, 'westos8': 95}

# 2.将字典中的key值和value值调换

d = {'a': 'apple', 'b': 'bob', 'c': 'cat'}
print {v: k for k, v in d.items()}

{'bob': 'b', 'apple': 'a', 'cat': 'c'}

d = {'a': 'apple', 'b': 'bob', 'c': 'cat'}
print {k: k.upper() for k, v in d.items()}

{'a': 'A', 'c': 'C', 'b': 'B'}

# 3.大小写合并,key值最终全部为小写

d1 = {'A': 10, 'b': 3, 'a': 5, 'B': 8, 'd': 1}
print {k.lower(): d1.get(k.upper(), 0) + d1.get(k.lower(), 0) for k, v in d1.items()}

{'a': 15, 'b': 11, 'd': 1}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值